如何在java中以秒获取UTC时间?
显示正确的秒数 我把本地时钟拨回5秒来测试这个。 我试过JodaTime,还有这个。这是我的当地时间如何在java中以秒获取UTC时间?,java,time,Java,Time,显示正确的秒数 我把本地时钟拨回5秒来测试这个。 我试过JodaTime,还有这个。这是我的当地时间 NTPUDPClient timeClient = new NTPUDPClient(); InetAddress inetAddress = InetAddress.getByName(TIME_SERVER); TimeInfo timeInfo = timeClient.getTime(inetAddress); long returnTime = time
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getReturnTime();
Date time = new Date(returnTime);
System.out.println("Time from " + TIME_SERVER + ": " + time);
输出:
时间from Time.nist.gov:Mon Apr 20 06:44:20 CDT 2015
Time.IS输出:
上午6:44:25
我需要UTC时间降到秒。以UTC为时区创建新的日期时间
final DateTime now = new DateTime(returnTime, DateTimeZone.UTC);
final Date javaDate = now.toDate();
我认为这个想法是从NTP服务器获取时间,而不是从本地机器获取时间……如何使用
Date
,而不是DateTime
?在Java 8之前,Joda库远远优于内置的Java类型,所以我将使用Joda在原始问题中回答这个问题。@SteveChaloner输出仍然来自本地机器。以下是我得到的:输出:Time-a.nist.gov:Mon-Apr 20 11:34:08 CDT 2015 Mon-Apr 20 11:34:08 CDT 2015仍然不正确,秒数…@Blackie当DateTime转换为java.util.Date时,时区信息丢失;请参阅前面关于内置Java日期支持的一点。如果添加System.out.println(现在)
对于您的代码,您将看到它以UTC格式打印。@halex longs不能携带时区偏移量,因此正如David Wallace上面所说的,这是一个本地格式问题,因为内部值以UTC格式保存。