3
SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date time1 = parser.parse("7:30");

Now if I want to add 2 more hours to time1, like:

7:30 + 2 = 9:30

how do I add the 2 hours?

4

3 に答える 3

7

java.util.Dateは推奨されないため、代わりに使用する必要がありますjava.util.Calendar

SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date myDate = parser.parse("7:30");
Calendar cal =Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.HOUR_OF_DAY,2); // this will add two hours
myDate = cal.getTime();

さらに良い解決策は、Joda Time - Java date and time APIを使用することです。

Web サイトから - Joda-Time は、Java の日付と時刻のクラスの高品質な代替品を提供します。

于 2012-12-13T06:05:14.520 に答える
3

オブジェクトに変換java.util.Dateし、 Calendar.add()メソッドを使用して時間を追加しますjava.util.Calendar

SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date time1 = parser.parse("7:30");
Calendar cal =Calendar.getInstance();
cal.setTime(time1);
cal.add(Calendar.Hour_Of_Day, 2);
time1 =cal.getTime();
System.out.println(parser.format(time1));//returns 09:30
于 2012-12-13T06:04:59.883 に答える
1

tl;dr

LocalTime.parse( "07:30" ).plusHours( 2 )

…または…</p>

ZonedDateTime.now( ZoneId.of( " Pacific/Auckland" ) )
    .plusHours( 2 )

java.time

java.util.Date、.Calendar、および java.text.SimpleDateFormat などの古い日時クラスは避ける必要があり、現在は java.time クラスに取って代わられています。

LocalTime

時刻のみの値の場合は、LocalTimeクラスを使用します。

LocalTime lt = LocalTime.parse( "07:30" );
LocalTime ltLater = lt.plusHours( 2 );  
String output = ltLater.toString();  // 09:30

Instant

特定の についてjava.util.Date、古いクラスに追加された新しいメソッドを使用して java.time に変換します。このInstantクラスは、ナノ秒単位の精度で UTC のタイムライン上の瞬間を表します。

Instant instant = myUtilDate.toInstant();

または、現在の瞬間を UTC としてキャプチャしInstantます。

Instant instant = Instant.now();

2 時間を秒として追加します。TimeUnitクラスは時間を秒に変換できます。

long seconds = TimeUnit.HOURS.toSeconds( 2 );
Instant instantLater = instant.plusSeconds( seconds );

ZonedDateTime

一部のコミュニティの実時間で表示するには、タイム ゾーンを適用します。a を適用しZoneIdてオブジェクトを取得しZonedDateTimeます。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

時間を追加できます。このZonedDateTimeクラスは、夏時間などの異常を処理します。

ZonedDateTime zdtLater = zdt.plusHours( 2 );

Duration

その 2 時間をオブジェクトとして表すことができます。

Duration d = Duration.ofHours( 2 ) ;
ZonedDateTime zdtLater = zdt.plus( d ) ;
于 2016-09-16T20:27:39.443 に答える