SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date time1 = parser.parse("7:30");
现在,如果我想再增加 2 个小时time1
,例如:
7:30 + 2 = 9:30
如何添加 2 小时?
SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date time1 = parser.parse("7:30");
现在,如果我想再增加 2 个小时time1
,例如:
7:30 + 2 = 9:30
如何添加 2 小时?
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 日期和时间 API。
从他们的网站 - Joda-Time 为 Java 日期和时间类提供了质量替代品。
转换java.util.Date
为java.util.Calendar
Object 并使用Calendar.add()方法添加 Hours
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
LocalTime.parse( "07:30" ).plusHours( 2 )
……或者……</p>
ZonedDateTime.now( ZoneId.of( " Pacific/Auckland" ) )
.plusHours( 2 )
应该避免使用旧的日期时间类,例如 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();
添加两个小时作为秒。该类TimeUnit
可以将小时转换为秒。
long seconds = TimeUnit.HOURS.toSeconds( 2 );
Instant instantLater = instant.plusSeconds( seconds );
ZonedDateTime
要查看某个社区的挂钟时间,请应用时区。应用 aZoneId
来获取一个ZonedDateTime
对象。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
您可以添加小时数。该类ZonedDateTime
处理异常,例如夏令时。
ZonedDateTime zdtLater = zdt.plusHours( 2 );
Duration
您可以将这两个小时表示为一个对象。
Duration d = Duration.ofHours( 2 ) ;
ZonedDateTime zdtLater = zdt.plus( d ) ;