我收到了一些日期格式,一个ISO-something,并且想知道将它解析为时间戳的适当方法。
我的最终目标是创建“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();
}
答案 0 :(得分:3)
使用SimpleDateFormat。看看here
答案 1 :(得分:3)
首先删除@
字符,然后创建一个SimpleDateFormat
实例,它将解析您的字符串并返回一个Date
对象,这将使您获得所需的时间戳。
String myStringDate = "2012-05-03 @ 15.55.05.433Z";
myStringDate = myStringDate.replace("@ ",""); //Also removes extra whitespace
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
Date myDate = dateFormat.parse("your date string");
myDate.getTime(); //Your timestamp in milliseconds
注意你需要使用try和catch来包围,因为它可以抛出异常。