問題描述
我知道這個主題已經被打死了,但是在搜索了幾個小時之后我不得不問這個問題.
I know this subject has been beaten to death but after searching for a few hours to this problem I had to ask.
我的問題:根據客戶端應用程序 (iphone) 的當前時區計算服務器上的日期.客戶端應用程序以秒為單位告訴服務器其時區距 GMT 有多遠.然后我想使用這些信息來計算服務器中的日期.服務器上的日期都存儲為 UTC 時間.所以我想在轉換為本地時區后獲取 UTC Date 對象的 HOUR.
My Problem: do calculations on dates on a server based on the current time zone of a client app (iphone). The client app tells the server, in seconds, how far away its time zone is away from GMT. I would like to then use this information to do computation on dates in the server. The dates on the server are all stored as UTC time. So I would like to get the HOUR of a UTC Date object after it has been converted to this local time zone.
我目前的嘗試:
int hours = (int) Math.floor(secondsFromGMT / (60.0 * 60.0));
int mins = (int) Math.floor((secondsFromGMT - (hours * 60.0 * 60.0)) / 60.0);
String sign = hours > 0 ? "+" : "-";
Calendar now = Calendar.getInstance();
TimeZone t = TimeZone.getTimeZone("GMT" + sign + hours + ":" + mins);
now.setTimeZone(t);
now.setTime(someDateTimeObject);
int hourOfDay = now.get(Calendar.HOUR_OF_DAY);
變量 hour 和 mins 表示本地時區與 GMT 相差的小時和分鐘.調試此代碼后 - 變量小時、分鐘和符號是正確的.
The variables hour and mins represent the hour and mins the local time zone is away from GMT. After debugging this code - the variables hour, mins and sign are correct.
問題是 hourOfDay 沒有返回正確的小時 - 它返回的是 UTC 時間的小時,而不是本地時間.想法?
The problem is hourOfDay does not return the correct hour - it is returning the hour as of UTC time and not local time. Ideas?
推薦答案
您的時區字符串格式不正確.試試這個,
You timezone string is formulated incorrectly. Try this,
String sign = secondsFromGMT > 0 ? "+" : "-";
secondsFromGMT = Math.abs(secondsFromGMT);
int hours = secondsFromGMT/3600;
int mins = (secondsFromGMT%3600)/60;
String zone = String.format("GMT%s%02d:%02d", sign, hours, mins);
TimeZone t = TimeZone.getTimeZone(zone);
這篇關于將 UTC 時間轉換為 Java 中的本地時區的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!