[英]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.