您還需要格式化輸出:
sdf.format(date)
//每評論編輯,澄清
這裏的工作的例子,從開始到結束:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
try {
Date date = sdf.parse(mailer);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hourDifference);
String formatted = sdf.format(calendar.getTime());
System.out.println(formatted);
} catch(Exception e){
System.out.println(e.getMessage());
}
所以讓我們一行一行地分解它。
在這裏,你要創建與功能的對象轉換日期人類可讀的字符串,反之亦然:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
在這裏,你要創建一個字符串的日期。您需要使用格式化程序來執行此操作,因爲字符串將採用上面列出的「hh:mm」格式。如果你已經使用了不同的格式,它很可能誤解了什麼日期字符串(郵件)表示:
Date date = sdf.parse(mailer);
在這裏,你會得到一個日曆實例,其中有方法來修改的那一刻,不像Date類
Calendar calendar = Calendar.getInstance();
現在設置日曆時間,你從你的mailer
串拿到日期:
calendar.setTime(date);
現在加入時間修改日期:
calendar.add(Calendar.HOUR, hourDifference);
在這一點上
所以,無論date
和calendar
是代表某個時刻的類的實例只。通常得到的最接近人類可讀的輸出是自紀元以來的毫秒數。您需要再次格式化它,以便以您想要的方式讀取它,使用您最初創建的相同格式化程序實例,這次僅在輸出端。要做到這一點,您需要在您討論的那一刻提供格式化程序,現在最好由日曆實例(已添加小時)來表示。不幸的是,當你可以傳遞一個Date
實例format
,你不能傳遞一個Calendar
實例,但你可以通過UTC時間來表示一下:
String formatted = sdf.format(calendar.getTime())
需要注意的是上述回報串線,您可以打印出來或記錄日誌或其他內容,但它實際上並未轉換日曆實例表示的時刻。
HTH
我累了,我得到了相同的結果 –
這就是你登錄什麼的。我剛剛測試,它的工作 – momo
當我使用sdf.getCalendar()。getTime()); ,hourDifference應用,當我使用sdf.format(日期)我只得到原始時間。我需要添加時間然後輸出。感謝momo –