我从服务器接收的时间以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())