なぜ解析'23:00PM"をSimpleDateFormat("hh:mm aa")を返し午前11?
-
18-09-2019 - |
質問
なぜ解析'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;
時間が適正範囲にあることを確実にする。
所属していません StackOverflow