簡體   English   中英

java SimpleDateFormat CST日期不同但結果相同

[英]java SimpleDateFormat CST different date but same result

public class TestDate {
    public static void main(String[] args) {
            Date data1 = new Date(25682400000L);
            Date data2 = new Date(25686000000L);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss");
            TimeZone cdtTime = TimeZone.getTimeZone("CST");
            sdf.setTimeZone(cdtTime);
            String s1 = sdf.format(data1);
            String s2 = sdf.format(data2);
            System.out.println(s1);
            System.out.println(s2);
    }
}

運行上面的代碼后,結果為:

1970-10-25:01-00-00
1970-10-25:01-00-00

有人可以告訴我為什么嗎?

使用大寫字母L

在長整數文字的末尾使用大寫字母L可使數字更易於閱讀。 在許多字體中,小寫字母l往往看起來像一個1

25682400000L而不是25682400000l

1小時時差

25686000000L-25682400000L = 3600000L

3600000毫秒= 3600秒= 60分鍾= 1小時

如果兩點鍾正好相隔一個小時,為什么您都看到凌晨1點呢? 繼續閱讀。

夏令時

如果用“ CST”表示您是美國的中部地區,那么夏時制 (DST)的瘋狂就給您帶來了麻煩。 1970年10月25日凌晨2點( DST)在美國那部分地區結束 因此,在凌晨2點,時鍾回滾到凌晨1點。 因此,那天早上有兩次“ 1 AM”發生。

請參見下面的代碼示例,請注意兩條線都說凌晨1點,但它們的時區偏移量(結束時)不同(-5 vs -6)。

3字母代碼

避免使用三個字母的時區代碼。 問題包括:

  • 它們既不是標准的也不是唯一的。 多個不同的時區可以共享同一代碼。
  • 當人們將它們與等同於夏令時的方式混合在一起時,它們令人困惑。

可以使用:

喬達時代

眾所周知,與Java捆綁在一起的java.util.Date,.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM