2013-04-26 90 views
-1

我有一個奇怪的情況與Java日曆。我正在使用推土機映射器來映射對象。日曆問題與時區

我想寫一個方法,將該對象轉換爲以下格式。 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

說元素2010-11-11T09:30:47.000Z

public Calender getValue(Date source,Calender c) { 
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
calendar.setTime(source); 
return calendar; 
} 

當我運行程序,它是印刷 2010-11-11T04:00:47.000Z - 因爲我們設置時區格林威治標準時間,(9.30 - 5.30 = 4.00)

我想我的對象具有相同的格式和value.if我不設置TimeZone格林尼治標準時間,它會顯示爲2008-11-21T09:30:47.000 +05:30。

我想要它作爲2010-11-11T09:30:47.000Z。

我試着將5.30添加到日曆中。

calendar.add(Calendar.HOUR, 5); 
    calendar.add(Calendar.MINUTE, 30) 

那麼works.But,如果這是任何其他地方跑,相差不會5.30.So我不能添加5.30 calenderget

有什麼辦法來擺脫這個問題的? 我想返回日曆對象。

任何建議或幫助,將不勝感激

回答

2

使用模式。 F.E:

String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; 
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern); 

此外,

SimpleDateFormat dateformatyyyyMMdd = new SimpleDateFormat("yyyyMMdd"); 
String date_to_string = dateformatyyyyMMdd.format(dateNow); 
0

你可以使用SimpleDateFormat的這個樣子。

SimpleDateFormat formatter, FORMATTER; 
    formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
    String oldDate = "2011-03-10T11:54:30.207Z"; 
    Date date = formatter.parse(oldDate.substring(0, 24)); 
    FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS"); 
    System.out.println("OldDate-->"+oldDate); 
    System.out.println("NewDate-->"+FORMATTER.format(date)); 

輸出OldDate - > 2011-03-10T11:54:30.207Z NewDate - > 10-MAR-2011 11:54:30.207