gpt4 book ai didi

java - 从午夜到日期对象的秒数

转载 作者:行者123 更新时间:2023-12-01 12:36:31 29 4
gpt4 key购买 nike

我有一个方法,可以从时间服务器加载时间并返回设置为该时间的日期对象。唯一的问题是,我从服务器获得的时间是自午夜以来的秒数。如何设置从午夜开始的秒数的日期对象?

public String timeserver = "time.nist.gov"; // Official U.S. Timeserver - Uses Time Protocol
public Date load() {
Socket reader;
try {
reader = new Socket(timeserver, 32);
InputStreamReader isr = new InputStreamReader(reader.getInputStream());
BufferedReader in = new BufferedReader(isr);
long g = isr.read() & 0x00000000ffffffffL;
Date d = new Date();
//set d's time from g?

reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

最佳答案

仅使用标准 Java 库,这可以通过 Calendar 类来完成:

// This gets you today's date at midnight
Calendar cal = Caledar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

// Next we add the number of milliseconds since midnight
long milliseconds = seconds * 1000;
cal.add(Calendar.MILLISECOND, milliseconds);

Date date = cal.getTime();

但是,如果它仍然是一个选项,我建议您考虑使用 Joda-Time 库。它has many advantages优于内置的 Date 类,例如更简单的 API。

在 Joda-Time 中,可以通过以下方式完成上述操作:

// Duration since midnight
long milliseconds = seconds * 1000;
Duration timeSinceMidnight = new Duration(milliseconds);

// Get the time of midnight today and add the duration to it
DateTime date = new DateMidnight().toDateTime();
date.plus(timeSinceMidnight);

关于java - 从午夜到日期对象的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534026/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com