[英]Why does SimpleDateFormat show unix date as December 31 1969?
我正在研究一個日期選擇器,其中有一個日期范圍。 我注意到我的所有日期都晚了一天,在調查問題時,我將問題縮小到 SimpleDateFormat 對象。 無論我給它什么 Unix 時間,它都會將日期設置為前一天。 這種行為的一個例子是
String myFormat = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat);
Log.d(TAG, "Time Zone: " + cal.getTimeZone().getDisplayName());
Log.d(TAG, "Printable: " + sdf.format(0));
我在記錄器中看到的輸出是
Time Zone: UTC
Printable: 12/31/1969
為什么格式化程序使用 12 月 31 日而不是 1970 年 1 月 1 日?
因為DateFormat
也有一個TimeZone
(並且您的系統未設置為 UTC)。 您可以使用DateFormat.setTimeZone(TimeZone)
更改它。 就像是
String myFormat = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("Printable: " + sdf.format(0));
輸出是(如您所料)
Printable: 01/01/1970
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.