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)
EDIT 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();
}