将时间从utc转换为android中的本地时间



我从服务器接收的时间以UTC+0000格式的秒为单位。我已将该时间转换为毫秒。我如何将这个长毫秒时间转换为我默认的时区时间格式(以long本身)。我看到过一些帖子严格地说使用Joda时间库。我有任何方法可以用原生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); 
}

但这也给了我两次之间的负面差异。伙计们请帮忙。我在这个问题上已经坚持了很长时间。谢谢

你把自己弄得一团糟。服务器提供的时间以毫秒为单位,Java的Date占用的时间以微秒为单位(http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html#Date(长)

所以

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())

相关内容

  • 没有找到相关文章