Javaで整数値のみを取得するために文字列として入力されたhh:mm:ss
形式の時間を解析するにはどうすればよいですか?
Basil Bourqueのコメントによると、これはJava 8:の新しいAPIを考慮に入れたこの質問に対する更新された回答です。
String myDateString = "13:24:40";
LocalTime localTime = LocalTime.parse(myDateString, DateTimeFormatter.ofPattern("HH:mm:ss"));
int hour = localTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
int minute = localTime.get(ChronoField.MINUTE_OF_HOUR);
int second = localTime.get(ChronoField.SECOND_OF_MINUTE);
//prints "hour: 13, minute: 24, second: 40":
System.out.println(String.format("hour: %d, minute: %d, second: %d", hour, minute, second));
備考:
======以下は、Java8以前のAPIを使用した、この質問に対する古い(元の)回答です:=====
私はこれで誰かを動揺させたら申し訳ありませんが、私は実際に質問に答えるつもりです。 Java APIはかなり巨大です。誰かが時々見逃すことは普通だと思います。
SimpleDateFormatがここでトリックを行うかもしれません:
http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html
次のようになります。
String myDateString = "13:24:40";
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//the above commented line was changed to the one below, as per Grodriguez's pertinent comment:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(myDateString);
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
int hour = calendar.get(Calendar.HOUR);
int minute; /... similar methods for minutes and seconds
知っておくべき落とし穴:
simpleDateFormatに渡すパターンは、使用する値に応じて私の例のパターンとは異なる場合があります(12時間形式や24時間形式などの時間です)。この詳細については、リンクのドキュメントをご覧ください
(SimpleDateFormatを介して)StringからDateオブジェクトを作成したら、Date.getHour()、Date.getMinute()などを使用するように誘惑されないでください。 、現在では廃止されています。上記の例のように、代わりにカレンダーを使用してください。
少し冗長ですが、Javaで日付を解析およびフォーマットする standard の方法です。
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
try {
Date dt = formatter.parse("08:19:12");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
} catch (ParseException e) {
// This can happen if you are trying to parse an invalid date, e.g., 25:19:12.
// Here, you should log the error and decide what to do next
e.printStackTrace();
}
String time = "12:32:22";
String[] values = time.split(":");
これには時間がかかり、コロンが見える場所で分割し、値を配列に入れるため、この後に3つの値が必要です。
次に、文字列配列をループして、それぞれを変換します。 (Integer.parseInt
を使用)
時間、分、秒を抽出したい場合は、これを試してください:
String inputDate = "12:00:00";
String[] split = inputDate.split(":");
int hours = Integer.valueOf(split[0]);
int minutes = Integer.valueOf(split[1]);
int seconds = Integer.valueOf(split[2]);