1

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

2 に答える 2

3

最初に文字を削除してから、文字列を解析して目的のタイムスタンプを取得できるオブジェクトを返す@インスタンスを作成します。SimpleDateFormatDate

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 に答える
3

SimpleDateFormat を使用します。こちらをご覧ください

于 2012-05-17T21:41:35.950 に答える