我正在做一个基于日期和时间采取行动的java程序。 问题是,当我使用java.util.Date对象时,我发现它受到windows挂钟的影响,我不知道该怎么做,我需要将日期从不受任何影响,或者如果有人知道如何以另一种方式采取这种行动 非常感谢你
答案 0 :(得分:0)
如果您需要特定的日期和时间,则需要使用所需的日期和时间实例信息创建Date
的实例,而不是调用new Date()
,这将为您提供current
实例。使用GregorianCalendar
或其他Calendar
子类。
如果只想要Date
相关,则需要将日期对象的时间(小时,分钟,秒,毫秒)缩小。
public static Date setTime(final Date date, final int hourOfDay, final int minute, final int second, final int ms)
{
final GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
gc.set(Calendar.HOUR_OF_DAY, hourOfDay);
gc.set(Calendar.MINUTE, minute);
gc.set(Calendar.SECOND, second);
gc.set(Calendar.MILLISECOND, ms);
return gc.getTime();
}
然后在Date
date
.setTime(date, 0, 0, 0, 0);
答案 1 :(得分:0)
有一些方法......您可以在网络上的某个地方设置服务,从中获取时间。通过这种方式,您可以确保运行此内容的所有PC使用相同的时间基准。
另一种方法是使用NTP服务器... Here是由设计NTP标准的人员正式发布的,如何使用Java客户端查询NTP服务器
答案 2 :(得分:0)
当你说“从未受到任何影响”时,你到底想到了什么?
由于用户可以(几乎总是)控制计算机的内部时钟,因此您需要从外部源检查日期和时间。请注意,内部时钟通常也会随着夏令时而变化。
如果您可以使用网络时间或来自互联网服务器的时间。 NIST有这样的服务http://www.nist.gov/pml/div688/grp40/its.cfm。您也应该查看网络时间协议。
但即便如此,理性上也可能被一个狡猾的人改变/改变。因此,如果您正在复制保护或与安全相关的事情,您可能需要重新考虑。
答案 3 :(得分:0)
java.util.Date
类获取当前时间取决于系统时钟。系统时钟可以通过多种方式进行修改(挂钟就是其中之一)。
如果您不想使用系统时钟,我建议您尝试从Internet获取时间。 NTP等协议可以做到这一点。 Java中存在一些实现,请参阅http://support.ntp.org/bin/view/Support/JavaSntpClient。