繁体   English   中英

在 Android 中将纪元时间转换为日期并将日期时间转换为纪元时间

[英]Convert Epoch time to date and Date to Epoch time in Android

StrDate = "2011-07-19T18:23:20+0000";

如何在 android 中获得上述日期格式的纪元时间

我也想知道如何将纪元时间转换为上述日期格式。

我会很感激一个例子的直接答案。

使用 Joda-Time 2.3 的示例代码。

Unix 时间是 UTC/GMT自 1970 年初以来的秒数

如何在 android 中获得上述日期格式的纪元时间

DateTime dateTimeInUtc = new DateTime( "2011-07-19T18:23:20+0000", DateTimeZone.UTC );
long secondsSinceUnixEpoch = ( dateTimeInUtc.getMillis() / 1000 ); // Convert milliseconds to seconds.

…和…

如何将纪元时间转换为上述日期格式。

String dateTimeAsString = new DateTime( secondsSinceUnixEpoch * 1000, DateTimeZone.UTC ).toString();

要将这些值转储到控制台……

System.out.println( "dateTimeInUtc: " + dateTimeInUtc );
System.out.println( "secondsSinceUnixEpoch: " + secondsSinceUnixEpoch );
System.out.println( "dateTimeAsString: " + dateTimeAsString );

奖励:调整到另一个时区。

DateTime dateTimeMontréal = dateTimeInUtc.withZone( DateTimeZone.forID( "America/Montreal" ) );

您应该使用SimpleDateFormat class 都支持格式化和解析。

示例代码:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZZZZ");
Date gmt = formatter.parse("2011-07-19T18:23:20+0000");
long millisecondsSinceEpoch0 = gmt.getTime();
String asString = formatter.format(gmt);

请注意,Java 中的 Date 实例始终表示自纪元 0 以来的毫秒数,采用 UTC/GMT 格式,但在您打印时以当地时间打印。

回答你的问题有点晚,但 Joda-Time 将能够以简单而干净的方式处理这两个问题。

使用Joda-Time

1.Epoch时间至今

日期是您的纪元时间

DateTime dateTime = new DateTime(date*1000L);
System.out.println("Datetime ..." + dateTime);

Datetime from Epoch ...2014-08-01T13:00:00.000-04:00

2.日期到纪元

 DateTime fromDate = new DateTime("2011-07-19T18:23:20+0000");
 long epochTime =  fromDate.getMillis();
 System.out.println("Date is.." + fromDate + " epoch of date " + epochTime);

 Date is..2011-07-19T14:23:20.000-04:00 epoch of date 1311099800000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM