在Android中将Epoch时间转换为日期并将日期转换为Epoch时间[重复]

Posted

技术标签:

【中文标题】在Android中将Epoch时间转换为日期并将日期转换为Epoch时间[重复]【英文标题】:Convert Epoch time to date and Date to Epoch time in Android [duplicate] 【发布时间】:2011-10-09 03:11:42 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

Unix 时间是 UTC/GMT 中seconds since beginning of 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" ) );

【讨论】:

【参考方案2】:

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

示例代码:

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 表示,但在打印时它会以当地时间打印。

【讨论】:

我无法访问日期对象的毫秒值。您正在尝试给我日期格式,我正在寻找纪元时间值,我将不胜感激直接回答,例如 long epochtime = blahblah();没有直接的函数来获取那个纪元时间。 纪元时间是什么意思?您获得的 Date 对象表示自 epoch 0 以来的毫秒数。我更新了我的回复以显示您如何获得毫秒数。代码显示必须从字符串转换为日期,从日期转换为字符串。 dateobj.getTime() 让我从格林威治标准时间 1970 年 1 月 31 日开始的毫秒数,当我对一个日期进行 simpledateformatter 解析,然后在当前时区自动显示它时,我只想知道现在,如果 gettime() 将根据我的时区返回正确的纪元时间 正如我所说,getTime() 返回的毫秒数是 总是 总是 总是 毫秒在 GMT toString() 将始终以当地时间打印时间,但这是纯粹的演示问题。 Date 只是 GMT 毫秒数的包装。【参考方案3】:

回答您的问题有点晚了,但 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

【讨论】:

以上是关于在Android中将Epoch时间转换为日期并将日期转换为Epoch时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在标准 SQL 中将 Epoch 时间戳转换为日期

在 T-SQL 中将以毫秒为单位的 Epoch 转换为日期

在android中将时间戳转换为当前日期

如何在android中将字符串转换为日期时间[关闭]

如何在android中将日期转换为firebase时间戳格式

在android中将字符串转换为日期格式