我是Android编程的初学者,并创建了一个应用程序,显示当天早上(早上6点),下午(中午12点)和晚上(晚上9点)的天气信息。 我正在使用本网站的JSON数据。 http://api.openweathermap.org/data/2.5/forecast?q=kangra,india&appid=41352ca35dd1be72cc7d9f47351d1b41&units=metric 链接中给出的时间戳是UTC格式,我无法根据当地时间显示天气信息。(我需要在当地时间早上6点到12点和下午6点播放天气信息) 我很感激很多人都可以帮我解决问题。
答案 0 :(得分:0)
上面的日期格式为epoch
format (or Unix time)。
要转换为java Date
,您可以这样做(从this SO answer开始)
Date expiry = new Date(Long.parseLong(date));
date
从api返回的int
或long
值,例如1476576000
答案 1 :(得分:0)
您需要阅读数据Feed的文档,以确定数据的含义。
我将猜测 dt
字段是自UTC中1970-01-01T00:00:00
纪元以来的整数秒。
示例数据:
“DT”:1476576000
Instant
类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数部分最多九(9)位)。
Instant instant = Instant.ofEpochSecond ( 1476576000L );
instant.toString():2016-10-16T00:00:00Z
您可以将其调整到任何时区。以continent/region
的格式指定proper time zone name。切勿使用诸如EST
或IST
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。应用ZoneId
获取ZonedDateTime
。
ZoneId zoneKolkata = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdtKolkata = instant.atZone( zoneKolkata );
zdtKolkata.toString():2016-10-16T05:30 + 05:30 [亚洲/加尔各答]
您可以再次为其他时区执行此操作。
ZoneId zoneMontreal = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtMontreal = instant.atZone( zoneMontreal );
zdtMontreal.toString():2016-10-15T20:00-04:00 [美国/蒙特利尔]
所有这三个日期时间对象(instant
,zdtKolkata
,zdtMontreal
)都是所有相同的时刻,同一个点上的时间线。唯一的区别是查看不同地区的wall-clock time。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。