alo*_*loo 5 java timezone datetime calendar date
我知道这个主题已被殴打致死,但在搜寻了几个小时解决这个问题后,我不得不问。
我的问题:根据客户端应用程序(iphone)的当前时区对服务器上的日期进行计算。客户端应用程序以秒为单位告诉服务器,其所在时区与GMT的距离为多远。然后,我想使用此信息对服务器中的日期进行计算。服务器上的日期都存储为UTC时间。因此,在将UTC日期对象转换为本地时区之后,我想获取其HOUR。
我目前的尝试:
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);
Run Code Online (Sandbox Code Playgroud)
小时和分钟变量代表本地时区远离GMT的小时和分钟。调试该代码后,小时,分钟和符号变量正确。
问题是hourOfDay没有返回正确的小时-它返回的时间是UTC时间而非本地时间。有想法吗?
您的时区字符串格式不正确。尝试这个,
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5148 次 |
| 最近记录: |