在android中以长值将时间从utc转换为本地时间

时间:2015-02-25 08:13:57

标签: android timezone utc timezone-offset

我以秒+ UTC + 0000格式从服务器接收时间。我已将该时间转换为毫秒。如何将此长毫秒时间转换为我的默认时区时间格式(长本身)。我已经看到严格的帖子说使用Joda-Time Library。我有任何方式以原生java方式这样做。我确实尝试了

    public static String toDuration(long duration) {
            long time_duration, temp_duration;
            Date now = new Date();
            temp_duration = duration * 1000L;
            int offset = TimeZone.getDefault().getRawOffset();
            Date date = new Date(temp_duration + offset);

            time_duration = now.getTime() - date.getTime();

            Log.d("Tag", "Now Time" + now.getTime());
            Log.d("Tag", "Date Time" + date.getTime());
            Log.d("Tag", "Long value is : " + time_duration); 
}

但这也给了我两次之间的负面差异。请帮助。我已经坚持了很久。感谢。

1 个答案:

答案 0 :(得分:0)

你让自己感到困惑。服务器给你时间,以毫秒为单位,Java的日期时间以毫秒为单位(http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html#Date(long)

所以

Date time = new Date(duration)

将包含正确的服务器返回时间。自1970年1月1日以来的秒数时间忽略了时区,这就是我们喜欢它的原因。

如果您想输出特定时区,请使用Android的DateFormat(http://developer.android.com/reference/java/text/DateFormat.html)并相应地设置时区。

要查找时区,请尝试TimeZone.getDefault()(http://developer.android.com/reference/java/util/TimeZone.html#getDefault()