2016-01-29 49 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

相關問題