2016-11-15 13 views
-2

9 PM CST 11月14日16または9:30 PM CST 11月14日私の文字列が私の日付と時刻のパターンがどうあるべきか、日付と上記の時間を、ある場合には16SimpleDateFormatの日付と時刻のパターン

その私ができますSimpleDateFormatを使用しますか?時間が9時のみか9時30分の場合は、どのようなパターンにすべきか分かりません。

これは間違いありませんか?

SimpleDateFormat sdf = new SimpleDateFormat("h:m aaa z d MMM yy"); 

私は上記のコードをテストしました。サンプルの日付は9:30 PM CST 14 NOV 16、それは動作しています。しかし、9 PM CST 14 11月16日のために、それは例外を投げます:

java.text.ParseException:解析できない日: "9 PMにCST 14は、11月16日"

+0

少しの使い捨てスクリプトで試しましたか?それを試してみてください。 –

+0

私の投稿を編集しました。サンプルの日付「9 PM CST 14 NOV 16」の例外がスローされます。 – Pseudonymous

+0

'9:00'が動作します。フォーマットに' m'が必要です – Jerry06

答えて

1

あなたがしようとするメソッドを書くことができ複数の日付形式のパターンそして

public static Date parseDate(String dateToParse) { 
    String[] dateFormats = {"h aaa z d MMM yy", "h:m aaa z d MMM yy"}; 

    for (String dateFormat : dateFormats) { 
     try { 
      return new SimpleDateFormat(dateFormat).parse(dateToParse); 
     } 
     catch (ParseException e) { 

     } 
    } 
    return null; 
} 

Date date1 = parseDate("9 PM CST 14 NOV 16"); 
System.out.println(date1); 
Date date2 = parseDate("9:30 PM CST 14 NOV 16"); 
System.out.println(date2); 

出力

Mon Nov 14 22:00:00 EST 2016 
Mon Nov 14 22:30:00 EST 2016