從epoch開始,調整時區會使您保持相同的毫秒數。
使用Joda-Time 2.3比Java中捆綁的臭名昭着的java.util.Date和.Calendar類要容易得多。雖然java.util.Date沒有時區,但Joda-Time中的DateTime對象確實知道它自己分配的時區。
以下是一些示例代碼。所有這些DateTime對象表示Universe的時間軸中的同一時刻,即自Unix時代(1970年初)以來的相同毫秒數。要驗證,請調用getMillis
方法來提取毫秒數。
String inputRaw = "2014-01-02 03:04:05";
String input = inputRaw.replace(" ", "T"); // Convert to strict version of ISO 8601 standard format.
DateTimeZone timeZoneParis = DateTimeZone.forID("Europe/Paris");
DateTime dateTimeParis = new DateTime(input, timeZoneParis); // Interpret that string as being in a particular time zone.
DateTime dateTimeUtc = dateTimeParis.withZone(DateTimeZone.UTC);
DateTime dateTimeMontréal = dateTimeParis.withZone(DateTimeZone.forID("America/Montreal"));
轉儲到控制檯...
System.out.println("input: " + input);
System.out.println("dateTimeParis: " + dateTimeParis);
System.out.println("dateTimeParis millis: " + dateTimeParis.getMillis());
System.out.println("dateTimeUtc: " + dateTimeUtc);
System.out.println("dateTimeUtc millis: " + dateTimeUtc.getMillis());
System.out.println("dateTimeMontréal: " + dateTimeMontréal);
System.out.println("dateTimeMontréal millis: " + dateTimeMontréal.getMillis());
當運行...
input: 2014-01-02T03:04:05
dateTimeParis: 2014-01-02T03:04:05.000+01:00
dateTimeParis millis: 1388628245000
dateTimeUtc: 2014-01-02T02:04:05.000Z
dateTimeUtc millis: 1388628245000
dateTimeMontréal: 2014-01-01T21:04:05.000-05:00
dateTimeMontréal millis: 1388628245000
如果調整時區,你仍然有相同數量的紀元以來的毫秒。 –
你好羅勒,我沒有相當讓你.. – oxygenan
我覺得時間戳是一樣的嗎?不同地區的日期時間不同 – hsluo