2016-08-11 13 views
-1

この形式の日付をサーバーから長い形式に変換する際に問題がありますか? この日付文字列を長い文字列に変換するには?

Example Date String - "2016-07-04T00:02:34.457Z" (Note this is a string) 

私はこの下に試みたが、ニーズが、私は cmtDtの周りにそれを追加し、nullでないとき、周り gmtをキャッチしてみてください - そして、私は一番下にそれを設定 cmtDt事前に0に初期化し、それが常に0

です
Calendar c = Calendar.getInstance(); 
TimeZone tz = c.getTimeZone(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ"); 
formatter.setTimeZone(tz); 
Date gmt = formatter.parse(comment.getDateCommented()); 
cmtDt = gmt.getTime(); 

答えて

1

SimpleDateFormatのためのあなたのフォーマット文字列は、する必要があります動作します

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS"); 

私のテストコードは次のとおりです。

Calendar c = Calendar.getInstance(); 
TimeZone tz = c.getTimeZone(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS"); 
formatter.setTimeZone(tz); 
Date gmt = formatter.parse("2016-07-04T00:02:34.457Z"); 
long cmtDt = gmt.getTime(); 
System.out.println("cmtDt = " + cmtDt); 
+0

...私は追加していますそれは間違っている – Lion789

0

SDFの形式を修正する必要があります。以下はあなたを助けるでしょう。

Calendar c = Calendar.getInstance(); 
    TimeZone tz = c.getTimeZone(); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); 
    formatter.setTimeZone(tz); 
    Date gmt = formatter.parse("2016-07-04T00:02:34.457Z"); 
    long cmtDt = gmt.getTime(); 
    System.out.println(cmtDt); 

プリント:1467599640457

3

まず、あなたの入力Stringはミリ秒を含んでいる(そして、あなたのフォーマットにはありません)。次に、入力Stringには、リテラルZ(おそらくUTCタイムゾーンを示す)が含まれています。最後に、システムタイムゾーンを取得してformatterに割り当てることは、確実にUTCになるとは限りません。あなたは、のようなものを必要とする、私は走った、となった

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"); 
formatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
try { 
    Date gmt = formatter.parse("2016-07-04T00:02:34.457Z"); 
    long cmtDt = gmt.getTime(); 
    System.out.println(cmtDt); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

1467590554457 
タイムゾーンは、それがローカルに影響を及ぼすしようとすると、動作するようには思えないし、それが将来の日付を示している
+0

私はこのコードを試しました、今、@ Jasonのコードは上記のタイムゾーンの様相ではありませんでした。 – Lion789

+0

@ Lion789私のコードは(コピーして貼り付けた場合はtsk-tsk)、 'cmtDt'をtryブロックします(そして、あなたが持っている他の 'cmtDt'をシャドーします)。最後に、デバッガを試してください。 –

+0

ローカル?それがうまくいかないならば、私はそれの外にcmtDtを設定しましたか? – Lion789

関連する問題