【发布时间】:2012-05-17 21:36:58
【问题描述】:
我收到了一些日期格式,一个 ISO 格式的东西,并且想知道将它解析为时间戳的合适方法。
我的最终目标是在其上进行标准切换以创建“X 分钟/小时/天前”。因此,如果有一个工具已经可以做到这一点,那将是最佳选择。
我试过 joda-time,但它卡住了。
这是一个时间字符串的例子:
2012-05-03 @ 15.55.05.433Z
此外,如果它确实不是 ISO 格式,我可以毫无问题地处理它,例如,@ 等等。
编辑:尝试 1:
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSSZ" );
try
{
Date myDate = dateFormat.parse( o.getCreationDate().replace( "@", "" ) );
long minutes = myDate.getTime() / 1000 / 60;
holder.timeText.setText( minutes + " minutes ago" );
}
catch( ParseException e )
{
e.printStackTrace();
}
结果:
05-17 16:58:05.003: W/System.err(2915): java.text.ParseException: Unparseable date: "2012-05-09 19:49:47.987Z" (at offset 24)
编辑 2:剥离 Z,并修正毫秒到分钟的转换:
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSS" );
try
{
Date myDate = dateFormat.parse( o.getCreationDate().replace( "@ ", "" ).replace( "Z", "" ) );
Date now = new Date();
long minutes = ( now.getTime() - myDate.getTime() ) / 1000 / 60;
holder.timeText.setText( minutes + " minutes ago" );
}
catch( ParseException e )
{
e.printStackTrace();
}
【问题讨论】:
-
Google for ISO8601 - 我不认为
@符号是其中的一部分,但自从我阅读 RFC 以来已经有一段时间了。正如 Gokhan 回答的那样 - 您可以使用 SimpleDateFormat 将其(可能没有 @)解析为可用的 Android 日期,然后重新格式化。