2015-08-03 35 views
1

上午使用此代碼來獲取我的應用程序中的時間戳,我將其存儲在我的服務器。UTC時間到時區,具體取決於國家

final SimpleDateFormat dateFormatGmt = new SimpleDateFormat("HH:mm:ss dd-MMM-yyyy"); 
timeenter = dateFormatGmt.format(new Date()); 
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("utc")); 

當用戶查看的應用程序報告摘要,在用戶側所存儲的UTC時間需要根據其位置被轉化爲它們的時區。

是任何簡單的方式來獲得自己的位置的機器人的偏移時間像 http://www.java2s.com/Code/Android/Date-Type/TimestamptoUTC.htm

+1

它被稱爲時區,而不是GMT。 GMT是一個特定時區(格林威治經時)。 Java時間戳與時區無關(始終是UTC),因此您不需要執行所有操作。我建議您始終以UTC存儲時間,並稍後應用任何時區修改。當使用它創建「Date」時,Android會自動將其轉換爲當前時區。另請注意,一個國家可能有幾個時區。 – m0skit0

回答

0

這就是所謂的時區,而不是GMT。 GMT是一個特定時區(格林尼治標準時間)。

Date是時區不可知的(它不存儲時區)。您需要在格式化程序中指定時區。例如:

final Date curDate = new Date(); 
final String format = "HH:mm:ss dd-MMM-yyyy"; 

final SimpleDateFormat dateFormatGmt = new SimpleDateFormat(format); 
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(dateFormatGmt.format(curDate)); 

final SimpleDateFormat dateFormatHK = new SimpleDateFormat(format); 
dateFormatHK.setTimeZone(TimeZone.getTimeZone("PNT")); 
System.out.println(dateFormatHK.format(curDate));