2

したがって、基本的に、文字列で次の形式を実現しようとしています。

2012-06-17T08:00:00.000+01:00

元の日付を文字列形式で取得し、それをさまざまな形式に解析します。

(yyyy-MM-dd'T'HH:mm:ss.sssZ) の形式で SimpleDateFormat を使用すると、次の出力が得られます。

2013-06-17T07:00:00.000+0530

ここで +0530 は +05:30 にする必要があります

上記の日付をカレンダー型に設定してから文字列に変換すると、次の形式が得られます。

2013-06-17T07:00:00+05:30

ここでは、秒後に .000 が表示されません。

JodaTime を使用せずに、これを実現する方法についてのアイデア。日付、文字列、およびカレンダー型のみで操作が必要

4

3 に答える 3

2

まず:、フォーマッタで追加の使用 XXX を取得し、大文字Sを使用してミリ秒を取得します

   SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")

更新:上記は 1.6 では機能しません

ただし、次のことを試すことができます

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") 
{
    public StringBuffer format(Date date, StringBuffer toAppendTo, java.text.FieldPosition pos) 
    {
        StringBuffer toFix = super.format(date, toAppendTo, pos);
        return toFix.insert(toFix.length()-2, ':');
    };

詳細については、この投稿を参照してください

于 2013-06-26T12:22:36.673 に答える
0

SimpleDateFormat パターン

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
于 2013-06-26T12:25:27.660 に答える