51

hh:mm:ssJavaで(コロンを無視して)整数値のみを取得するために文字列として入力されたformat の時間を解析するにはどうすればよいですか?

4

4 に答える 4

81

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));

備考:

  • OPの質問には、時、分、秒のみを含む時刻の具体的な例が含まれているため(日、月などは含まれていません)、上記の回答ではLocalTimeのみを使用しています。日、月なども含む文字列を解析する場合は、LocalDateTimeが必要になります。その使用法は、LocalTime の使用法とほとんど同じです。
  • 時刻 int OP の質問にはタイムゾーンに関する情報が含まれていないため、回答では日付/時刻クラス (LocalTime、LocalDateTime) の LocalXXX バージョンが使用されます。解析する必要がある時刻文字列にタイムゾーン情報も含まれている場合は、ZonedDateTimeを使用する必要があります。

====== 以下は、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 時間形式など) に応じて、私の例のパターンとは異なる場合があります。この詳細については、リンクのドキュメントを参照してください。

  • String から (SimpleDateFormat を使用して) Date オブジェクトを作成したら、Date.getHour()、Date.getMinute() などを使用しないでください。これらは機能しているように見えることもありますが、全体的に悪い結果をもたらす可能性があります。 、およびそのため、現在は非推奨です。上記の例のように、代わりにカレンダーを使用してください。

于 2012-08-16T20:23:39.063 に答える
12

少し冗長ですが、Java で日付を解析してフォーマットする標準的な方法です。

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();
}
于 2012-08-16T20:23:08.753 に答える
3
String time = "12:32:22";
String[] values = time.split(":");

これには時間がかかり、コロンが見える場所で分割して値を配列に入れるため、この後に3つの値が必要です。

次に、文字列配列をループして、それぞれを変換します。(とInteger.parseInt)

于 2012-08-16T20:22:21.407 に答える
1

時間、分、秒を抽出したい場合は、これを試してください:

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]);
于 2012-08-16T20:22:45.827 に答える