使用大写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