2016-01-29 62 views
-1

我想知道印度标准时间的日期和时间,我不想使用我的系统时间和日期。我从来没有使用网络传输协议(NTP),但通过浏览互联网,我认为ntp可以做jop。如何从java获得印度时间标准?

+2

嗨,欢迎来到SO。请添加代码的重要部分。请阅读[如何提问](http://stackoverflow.com/help/how-to-ask)和[mcve](http://stackoverflow.com/help/mcve),以获得更好的收到问题。 – davejal

+2

这个问题有两个部分:1)如何通过NTP获得时间? 2)如何在特定时区对其进行格式化?你可以做哪些? –

回答

0

更容易的选择可能是使用JodaTime,这样你就可以做这样的事情

DateTime dateTimeIndia = new DateTime(DateTimeZone.forID("Asia/Kolkata"); 
+0

[维护模式](https://en.wikipedia.org/wiki/Maintenance_mode)中的[Joda-Time](http://www.joda.org/joda-time/)项目建议迁移到[java.time](http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)类。 –

1

TL;博士

ZonedDateTime.now(ZoneId.of("Asia/Kolkata")) 

使用java.time

使用Java。时间类,内置于Java 8及更高版本。

您的计算机硬件时钟是否设置为正确的时间?所有现代的个人电脑操作系统,如macOS,BSD,Linux,Windows等都在网上自动联系time servers,以便准确地保持当前时间。在企业中,计算机经常联系内部时间服务器。

首先让我们在UTC中得到当前时刻。 Instant类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数点后最多九(9)位数字)。

Instant instant = Instant.now(); 

接下来我们要看到,同一时刻通过一些特定区域的wall-clock time的镜头。在这种情况下,印度。因此,我们需要确定印度的时区,并将其应用于我们的Instant对象。

计算机的默认时区应与您的Java编程无关。永远不要依赖JVM的当前默认时区,因为它可以在运行时随时由该JVM中任何应用程序的任何线程中的任何代码进行更改。始终指定您希望/期望的时区。

continent/region的格式指定一个proper time zone name,如America/MontrealAfrica/Casablanca,或Pacific/Auckland。切勿使用3-4字母缩写,如ESTIST,因为它们是而不是真正的时区,不是标准化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of("Asia/Kolkata"); // Never use 'IST'! Use a real time zone name such as "Asia/Kolkata". 

应用是ZoneId我们Instant得到ZonedDateTime对象。

ZonedDateTime zdt = instant.atZone(z); 

关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?

ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval,YearWeek,YearQuartermore

相关问题