我以秒+ 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);
}
但这也给了我两次之间的负面差异。请帮助。我已经坚持了很久。感谢。
答案 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())