我正在使用已编码的JSON文件处理Android项目。
所以我得到了这个:
{
"type": "Feature",
"properties": {
"mag": 1.29,
"place": "10km SSW of Idyllwild, CA",
"time": 1388620296020,
"updated": 1457728844428
}
}
我希望在年,日,小时和秒内转换time
。
我知道有很多话题都在谈论我的问题,但我已经尝试过但没有成功。
答案 0 :(得分:1)
在 Android 中,您可以使用ThreeTen Backport,这是Java 8新日期/时间类的绝佳后端,以及ThreeTenABP(更多关于如何使用它{ {3}})。
此API提供了一种处理日期的好方法,比过时的Date
和Calendar
(旧类(Date
,Calendar
和{{1}更好}}} here并且它们被新的API取代。)
要从时间戳值中获取日期(假设SimpleDateFormat
是来自unix世纪的毫秒的数量),您可以使用1388620296020
类:
org.threeten.bp.Instant
输出为// create the UTC instant from 1388620296020
Instant instant = Instant.ofEpochMilli(1388620296020L);
System.out.println(instant); // 2014-01-01T23:51:36.020Z
,因为2014-01-01T23:51:36.020Z
始终为UTC。如果您想将其转换为其他时区的日期/时间,可以使用Instant
课程并创建org.threeten.bp.ZoneId
:
org.threeten.bp.ZonedDateTime
输出将为ZonedDateTime z = instant.atZone(ZoneId.of("Europe/Paris"));
System.out.println(z); // 2014-01-02T00:51:36.020+01:00[Europe/Paris]
(相同的UTC时刻转换为巴黎时区)。
请注意,API避免使用3个字母的时区名称(例如2014-01-02T00:51:36.020+01:00[Europe/Paris]
或ECT
),因为它们是lots of problems。始终更喜欢使用全名(例如ambiguous and not standard定义的CST
或Europe/Paris
) - 您可以通过调用America/Los_Angeles
获取所有可用名称。
如果您想以其他格式打印日期,可以使用ZoneId.getAvailableZoneIds()
(请参阅IANA database查看所有可能的格式):
org.threeten.bp.format.DateTimeFormatter
答案 1 :(得分:0)
可以是类似的东西;
long jsondate = 1388620296020L;
Date dt = new Date (jsondate);
SimpleDateFormat sd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(sd.format(dt));
答案 2 :(得分:0)
试试这个
long uptime = 1388620296020;
long days = TimeUnit.MILLISECONDS
.toDays(uptime);
uptime -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS
.toHours(uptime);
uptime -= TimeUnit.HOURS.toMillis(hours);
long minutes = TimeUnit.MILLISECONDS
.toMinutes(uptime);
uptime -= TimeUnit.MINUTES.toMillis(minutes);
long seconds = TimeUnit.MILLISECONDS
.toSeconds(uptime);
答案 3 :(得分:0)
这个更短:
long lg=1388620296020l;
Date date = new Date(lg);
答案 4 :(得分:0)