以下の日付文字列をDate
オブジェクトに解析する方法
String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("E MM dd kk:mm:ss z yyyy");
Date result = df.parse(target);
例外をスローします...
Java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000"
at Java.text.DateFormat.parse(DateFormat.Java:337)
パターンが間違っています。あなたは3文字の日の省略形を持っているので、それはEEE
でなければなりません。あなたは3文字の月の略語を持っているので、それはMMM
でなければなりません。これらの日と月の略語はロケールに依存するため、SimpleDateFormat
ロケールも英語に明示的に指定したいとします。そうしないとプラットフォーム自体のデフォルトロケールが使用され、それ自体は英語ではない可能性があります。
public static void main(String[] args) throws Exception {
String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
Date result = df.parse(target);
System.out.println(result);
}
これはここに印刷されます
木9月28日07:29:30ボット2000
これは私のタイムゾーンでは正しいです。
また、HH
の代わりにkk
を使用したくない場合も、再検討します。有効なパターンについての詳細は javadoc を読んでください。
これが実用的な例です。
import Java.text.ParseException;
import Java.text.SimpleDateFormat;
import Java.text.DateFormat;
import Java.util.Date;
public class j4496359 {
public static void main(String[] args) {
try {
String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss zzz yyyy");
Date result = df.parse(target);
System.out.println(result);
} catch (ParseException pe) {
pe.printStackTrace();
}
}
}
印刷します。
Thu Sep 28 13:29:30 CEST 2000
String target = "27-09-1991 20:29:30";
DateFormat df = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
Date result = df.parse(target);
System.out.println(result);
これはうまくいきますか?
new SimpleDateFormat("EEE MMM dd kk:mm:ss ZZZ yyyy");
そして
new SimpleDateFormat("EEE MMM dd kk:mm:ss Z yyyy");
まだ走ります。しかし、あなたのコードが例外を投げたのなら、それはあなたのツールやjdkあるいはその他の理由によるものです。 私のIDEでも同じエラーが発生しましたが、これらをチェックしてください http://ideone.com/Y2cRr (オンラインで) ZZZ および Z
出力は次のとおりです。Thu Sep 28 11:29:30 GMT 2000
私はこの問題を抱えていました、そして私はLocale
をUS
に設定しました、そしてそれは働きます。
static DateFormat visitTimeFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US);
String
"Sun Jul 08 00:06:30 UTC 2012"
の場合
解析例外はチェック済み例外なので、@ mikuが示唆しているように、文字列から日付への解析を行うときはtry-catchでキャッチする必要があります。