2016-02-12 30 views
0

我試圖將一個時區的偏移量添加到存儲在hourDifference中的另一個時區。它工作正常。不過,我想只能輸出HH:MM還不如下面所示的完整的日期,並存儲在新的變量如何僅顯示來自getCalendar()的時間

  1. 前:星期四1月1 16:55:00 GMT + 00:00 1970年
  2. 後周四1月1 17:55:00 GMT + 00:00 1970年(大它的工作原理)

想什麼輸出I:17:55

我的代碼:

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
//Mailer is a simple string in the format 16:55 PM for example 
Date date = sdf.parse(mailer); 
sdf.getCalendar().add(Calendar.HOUR, (int) **hourDifference**); 

Log.d("Time with difference ", "LOG" + **sdf.getCalendar().getTime()**); 

回答

0

您還需要格式化輸出:

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); 
在這一點上

所以,無論datecalendar是代表某個時刻的類的實例只。通常得到的最接近人類可讀的輸出是自紀元以來的毫秒數。您需要再次格式化它,以便以您想要的方式讀取它,使用您最初創建的相同格式化程序實例,這次僅在輸出端。要做到這一點,您需要在您討論的那一刻提供格式化程序,現在最好由日曆實例(已添加小時)來表示。不幸的是,當你可以傳遞一個Date實例format,你不能傳遞一個Calendar實例,但你可以通過UTC時間來表示一下:

String formatted = sdf.format(calendar.getTime()) 

需要注意的是上述回報串線,您可以打印出來或記錄日誌或其他內容,但它實際上並未轉換日曆實例表示的時刻。

HTH

+0

我累了,我得到了相同的結果 –

+0

這就是你登錄什麼的。我剛剛測試,它的工作 – momo

+0

當我使用sdf.getCalendar()。getTime()); ,hourDifference應用,當我使用sdf.format(日期)我只得到原始時間。我需要添加時間然後輸出。感謝momo –

相關問題