1

我收到了一些日期格式,一个 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();
}
4

2 回答 2

3

使用简单日期格式。看看这里

于 2012-05-17T21:41:35.950 回答
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 包围,因为它会引发异常。

于 2012-05-17T21:45:52.370 回答