質問

なぜ解析'23:00PM"を SimpleDateFormat("hh:mm aa") 戻り午前11?

役に立ちましたか?

解決

することとなって例外では23:00までにはない有効な文字列がJavaの日付/時刻の設備 デフォルトでは、取り扱う場合日程の解析.

ロジックは23:00までは12時間後11:00、11:00AM日は翌日になります。しょうもう"月31日に"解析されている"として月1"(一日目以降30分)までとなります。

されない場合、この動作を設定し、厳密性をfalseにおSimpleDateFormatを使用 DateFormat#setLenient(boolean), まで例外に無効な日付ます。

他のヒント

あなたは24時間の時間を解析する場合は、あなたのフォーマットとして:「ミリメートルのAA HHを」

このあなたが欲しいです。

public static void main(String[] args) throws ParseException {
    SimpleDateFormat df = new SimpleDateFormat("HH:mm aa");
    final Date date = df.parse("23:00 PM");
    System.out.println("date = " + df.format(date));
}

出力

date = 23:00 PM

あなたはHH:mm aaを試したことがありますか?

HH 12のためであるが、

hhは24時間である。

ここで javadocのspecifed書式設定オプションがあります

H     Hour in day (0-23)    
k   Hour in day (1-24)  
K   Hour in am/pm (0-11)    
h   Hour in am/pm (1-12) 

「h」は時間1-12のためになることに注意してください。あなたは1-24を処理したい場合は、「K」してみてください。 0-23のための "H" をしてみてください。あなたは不可能なデータに入れている場合しかし、私は有効な結果を期待していない。

23:00 PMは11 AM の次の日のものと考えることができます。 JavascriptとPHPはかなりこのように動作しますが、私は、Javaのために話すことはできません。

私はそれが何かをしていることを推測します

hours = hours % 12;

時間が適正範囲にあることを確実にする。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top