簡體   English   中英

Java日歷日期操作問題

[英]Java Calendar date manipulation issue

我嘗試以下列格式獲取當前日期/時間,

SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); 
// should display something similar to  2001.07.04 AD at 12:08:56 PDT
Calendar calendar = Calendar.getInstance();
calendar.set(2009, 2, 4, 10, 22, 44);
format.format( calendar.getTime() );
System.out.println(calendar.getTime());

但它顯示為2009年3月4日星期三10:22:44 IST 2009。

第二個問題是我想看到設定時間的毫秒值。

System.out.println(calendar.getTimeInMillis());

但它總是返回當前時間毫秒值而不是我之前設置的時間。

我在這里失蹤了什么?

SimpleDateFormat#format(Object)方法返回格式化的String ,它不會影響Calendar#getTime()方法返回的方式。 為此你應該做一個:

System.out.println(format.format(calendar.getTime()));

我看到的第一個問題是format.format(calendar.getTime()); 返回一個String,實際上並沒有改變Calendar的格式。 您將要使用System.out.println(format.format(calendar.getTime()));替換最后兩行System.out.println(format.format(calendar.getTime())); 使用您指定的格式實際打印出日期(假設您的SimpleDateFormat有效,但它看起來很快就能看到)。

不幸的是,不確定你遇到的第二個問題,但我有一個地方可供你開始。 我不喜歡getTime()getTimeInMillis()的Javadocs的措辭。 getTime()方法返回“表示此Calendar的時間值的Date對象”,而getTimeInMillis()返回“當前時間為UTC時間的毫秒”。 對我來說,措辭的不同意味着getTimeInMillis()不使用Calendar對象指定的日期,即使它是一個實例方法。 嘗試System.out.println(calendar.getTime().getTime()); 為了在Calendar的Date表示上調用getTime()方法,該文檔返回1970年1月1日到Date對象表示的日期之間的時間(以毫秒為單位)。

對於問題的第二部分,您應該調用Calendar.get(Calendar.MILLISECONDS)來檢索日歷對象的毫秒字段。

暫無
暫無

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

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