2017-04-06 9 views
1

日付形式2016-08-29T09:15:17Zを取得しようとしましたが、末尾に末尾のZを取得できませんでした。例のタイムスタンプを取得する方法:2016-08-29T09:15:17Z?

私はまた、公式サイトの日付時刻のドキュメントをチェックしましたが、同様のパターンは見つかりませんでした。次のようにこれまでのところ、私が作成した日付形式は次のとおりです。

YYYY-MM-dd'T'HH:MM:ss.SSSZ

これまでのところは、私が書いたコードは次のとおりです。

public static void main(String args[]) throws ParseException{ 
     Date nDate=new Date(); 
     //SimpleDateFormat format=new SimpleDateFormat("ddMMYYYYHHMMSS"); 
     String date=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(nDate); 
     System.out.println(date); 
} 

答えて

0

Tは日付と時刻を区切る単なるリテラルであり、Zは「ズールー時間」(UTC)とも呼ばれる「ゼロ時間オフセット」を意味します。あなたの文字列は常に「Z」を持っている場合は、使用することができます -

TimeZone timeZone = TimeZone.getTimeZone("UTC"); // optional 
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); // Quoted "Z" to indicate UTC, no timezone offset 
dateFormat.setTimeZone(timeZone); // optional 
String date = dateFormat .format(new Date()); // date will have the required format 
System.out.println(date); 
+0

「試してください」は答えではありません。それがうまくいく理由を説明してください。 – Jens

+0

@Jensの提案に感謝:) –

0

Zあなたはそれarroundの単一引用符を配置する必要がありますので、あなたの文字列のTのような一定値である:

String date=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(nDate); 

君場合をタイムゾーンの値に

0

Oracleドキュメントを期待していたDateFormat単一引用符なしでZを使用するには、zZの両方が時間帯の使用であることを説明します。私は以降JDK 8から導入された新しいjava.timeのAPIを使用して、それを行うための別の方法を追加してい

yyyy-MM-dd'T'HH:mm:ss'Z' 
0

:あなたはZの特別な意味をしたくない場合は だから、あなたは次のように記述する必要があります。

 LocalDateTime nDate=LocalDateTime.now(); 
     DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
       .append(DateTimeFormatter.ISO_LOCAL_DATE) 
       .appendLiteral('T') 
       .append(DateTimeFormatter.ISO_LOCAL_TIME) 
       .appendLiteral('Z')        
       .toFormatter(); 
     String date = formatter.format(nDate); 
     System.out.println(date); 
関連する問題