java– 在Android模拟器中将unix时间戳转换为日期

java– 在Android模拟器中将unix时间戳转换为日期,第1张

概述我有一个时间戳我想转换为日期.我试过这个时间戳:1336425840.这应该是周一,2012年5月7日21:24:00GMT,其中GMT是模拟器应该设置的时区.我试过这个:finalCalendarc=Calendar.getInstance();c.setTimeInMillis(1336425840*1000);Dated=c.getTime();Log.i("MyTag","Hours:

我有一个时间戳我想转换为日期.我试过这个时间戳:1336425840.这应该是周一,2012年5月7日21:24:00 GMT,其中GMT是模拟器应该设置的时区.我试过这个:

final Calendar c = Calendar.getInstance();c.setTimeInMillis(1336425840*1000);Date d = c.getTime();Log.i("mytag", "Hours: " + d.getHours());

结果是:小时:23.

因此,似乎返回的日期是根据GMT 2计算的,这是我的系统设置的时区.我期望g.hetHours()返回21,因为模拟器的时区似乎设置为GMT.

此外,该时间戳来自于使用mktime读取C中的实际日期,这似乎返回正确的时间戳.但Java似乎指的是不同的时区.我做错了吗?为什么不是周一,2012年5月7日21:24:00 GMT回归?

解决方法:

我很确定1336425840 * 1000会给你一个超出常规int范围的值.事实上,如果你打印日历对象的完整日期,你会看到它显示在1970年1月8日23:56:50 GMT 1970,这解释了你看到的23个小时.

将乘法更改为:(注意结尾处的L)

c.setTimeInMillis(1336425840 * 1000L);

//编辑:易于确认:

System.out.println((1336425840 * 1000L > Integer.MAX_VALUE));

总结

以上是内存溢出为你收集整理的java – 在Android模拟器中将unix时间戳转换为日期全部内容,希望文章能够帮你解决java – 在Android模拟器中将unix时间戳转换为日期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1112931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存