Mức độ khác nhau của EST từ EST5EDT? EST có tính đến DST không?múi giờ EST khác với EST5EDT như thế nào?
Tôi đã viết một đoạn mã java nhỏ để tìm ra sự khác biệt và đầu ra nói EST5EDT mất nhập vào tài khoản DST khi EST không
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS");
dateFormat.setTimeZone(TimeZone.getTimeZone("EST5EDT"));
System.out.println("EST5EDT" +dateFormat.format(new Date()));
/* prints EST5EDT2013-Apr-05 02:24:16.471 */
dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS");
dateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
System.out.println("EST "+dateFormat.format(new Date()));
/*prints EST 2013-Apr-05 01:24:16.472 */
Nhưng đoạn dưới đây được sản xuất ra gây sốc
System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000));
/* prints 5 instead of 4 (DST) */
Could ai đó hãy giải thích chính xác những gì đang xảy ra ở đây? tại sao getRawOffset trả về 5 thay vì 4? Làm thế nào để có được bù đắp múi giờ với DST?
Tránh cả hai định danh kiểu 'EST' và' EST5EDT' bất cứ khi nào có thể. Thay vào đó, hãy sử dụng 'America/New_York' và các số nhận dạng có liên quan. [Xem tại đây] (http://www.nntp.perl.org/group/perl.datetime/2009/03/msg7221.html) và bài đăng trùng lặp. –