2015-07-28 114 views
0

我有一個日期變量(java.util.Date),(2015-4-4 15:30:26-0700)存儲在yyyy-mm-dd hh:mm:ss timezone格式的日期。現在,如果我嘗試獲取日曆日(即04 april 2015),它將轉換爲當地時區並在第二天打印(即05 april 2015)。我如何獲得特定時區的日曆日(例如+1:30 GMT)? 我使用java.util.Date中的getdate()函數來獲取日曆日。如何從特定時區的Java日期字段獲取日曆日期?

+0

參見[這裏](http://stackoverflow.com/a/230383/ 3102124)這是一個可能的重複 – Kami

回答

3

我有一個日期存儲在日期變量(java.util.Date),(說2015-4-4 15:30:26-0700)在yyyy-mm-dd hh:mm:ss時區格式。

不,你有一個Date變量。這沒有任何特定的格式。忽略什麼toString()告訴你 - 這只是在你的本地時區格式化,以默認格式。這並不意味着格式或時區是Date對象狀態的一部分 - 這只是一個時間點。

這聽起來像你想:

// Whatever pattern you want - ideally, specify the locale too 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
// Whatever time zone you want 
format.setTimeZone(...); 
String text = format.format(date); 

另外,如果你只想要一個Calendar值:

TimeZone zone = ...; // Whatever time zone you want 
Calendar calendar = Calendar.getInstance(zone); 
calendar.setTime(date); 
// Now use calendar.get(Calendar.YEAR) etc 
+0

日期被存儲在-7:00 GMT格式。 我需要驗證這些日期的一些值。 但是,當我嘗試獲取日曆日期時,日期被修改爲我當前的時區。有沒有辦法通過這個? 我也可以給時區爲-7:00或+5:30(或者必須搜索與特定值匹配的時區)? –

+0

@LakshitPande:「日期格式爲-7:00格式。」不在'java.util.Date'中,他們不是。在'java.util.Date'中,它們被存儲爲'long'值,這是自Unix時代以來的毫秒數。我給了你代碼,它可以在你想要的任何時區顯示值,或者給你一個你可以使用的日曆對象。目前還不清楚您是否嘗試過這些代碼,或者您的「日期」是從哪裏來的。使用'SimpleTimeZone'來構建一個固定偏移的時區 - 但要注意,這在很多地方可能不會有用,因爲它不會觀察DST。 –

+0

感謝您的信息。我沒有正確理解答案。評論幫助。再次感謝。有用。 –