我试图检索一个转换的“小时”整数为用户的时区与GMT UNIX时间。我的代码在某些时候是有效的,尽管例如,当时是东海岸晚上9点,一个小时的结果是0。有人能帮忙吗?
long l = Long.parseLong(oslist.get(position).get("hour"));
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(l);
calendar.setTimeInMillis(l * 1000);
calendar.setTimeZone(TimeZone.getDefault());
int hour = calendar.get(Calendar.HOUR);
Log.v("TIME:", ""+hour);
4条答案
按热度按时间irlmq6kh1#
您不需要设置时区-它是默认的,因为它是默认的。调用
setTimeInMillis
两次是没有意义的。所以只要:应该没问题如果不是,那么按照其他答案的建议使用字符串表示法是没有帮助的。
如果在东海岸晚上9点时给出0,则表明默认时区不是代表东海岸的时区。我建议你先诊断一下:
hmtdttj42#
java.time
java.util
日期时间API及其相应的解析/格式化类型SimpleDateFormat
已经过时并且容易出错。2014年3月,modern Date-Time API取代了这个API。从那时起,强烈建议切换到现代日期时间APIjava.time
。java.time
API方案:您可以使用
Instant#ofEpochSecond
来获取与给定Unix时间戳对应的Instant
。接下来,将Instant
转换为所需时区的ZonedDateTime
,然后您可以获得单独的时间单位(例如#21040;出了这个ZonedDateTime
。输出:
Online Demo
从**Trail: Date Time**了解有关现代日期-时间API的更多信息
disho6za3#
另外,如果您需要时区本身,请参阅Class SimpleDateFormat。特别是
z
和Z
。czfnxgou4#
试试这个: