使用大寫L
使用的?長整型文字末尾的大寫字母L
可使編號更易於閱讀。小寫字母l
通常看起來像許多字體中的一個1
。
寫25682400000L
而不是25682400000l
。
1小時的時差
25686000000L - 25682400000L = 3600000L
3600000毫秒=3600秒=60分鐘= 1小時
如果他們完全是一個小時的間隔,爲什麼你看到凌晨1點了都?請繼續閱讀。
夏令時
如果「CST」,你的意思是美國,然後是Daylight Savings Time(DST)的瘋狂的中部去拉你一招。 1970年10月25日凌晨2點是DST ended in that part of the United States。所以在凌晨2點的時候,時鐘回到了凌晨1點。所以那天早上有兩個「上午」時間。
請參閱下面的代碼示例,並注意兩條線都表示上午1點,但它們的時區偏移量(結尾處)不同(-5 vs -6)。
3字母代碼
避免使用三個字母的時區代碼。問題包括:
- 它們既不標準也不唯一。多個不同的時區可以共享相同的代碼。
- 他們混淆不清,因爲人們將他們與夏令時相當。
要麼使用:
喬達時間
與java.util.Date,與Java捆綁.Calendar和java.text.SimpleDateFormat的班是出了名麻煩。避免它們。
這種日期時間的工作是如此使用容易得多之一:
long data1 = 25682400000L;
long data2 = 25686000000L;
DateTimeZone timeZone = DateTimeZone.forID("America/Chicago");
DateTime dateTime1 = new DateTime(data1, timeZone);
DateTime dateTime1_UTC_GMT = dateTime1.toDateTime(DateTimeZone.UTC);
DateTime dateTime2 = new DateTime(data2, timeZone);
DateTime dateTime2_UTC_GMT = dateTime2.toDateTime(DateTimeZone.UTC);
。
轉儲到控制檯...
System.out.println("dateTime1: " + dateTime1);
System.out.println("dateTime1_UTC_GMT: " + dateTime1_UTC_GMT);
System.out.println("dateTime2: " + dateTime2);
System.out.println("dateTime2_UTC_GMT: " + dateTime2_UTC_GMT);
運行時...
dateTime1: 1970-10-25T01:00:00.000-05:00
dateTime1_UTC_GMT: 1970-10-25T06:00:00.000Z
dateTime2: 1970-10-25T01:00:00.000-06:00
dateTime2_UTC_GMT: 1970-10-25T07:00:00.000Z