1. 概述

Java提供了一个标准的API来处理日期和时间。**日期时间API提供了一个方法,可以将字符串格式的时间解析为等效的LocalTime类型,以便进一步操作。**

在这篇教程中,我们将探讨如何使用旧版的Date API 和新版的日期时间API在字符串格式下向时间添加分钟。

2. 使用旧版Date API

时间字符串表示时间,但其数据类型是字符串。对字符串进行算术运算不可行。因此,在执行算术运算之前,我们需要将时间字符串解析为等效的Date类型

旧版的Date API 可以将字符串时间解析为Date。下面是一个使用旧版Date API 添加分钟的例子:

@Test
void givenTimeStringUsingSimpleDateFormat_whenIncrementedWith10Minutes_thenResultShouldBeCorrect() throws ParseException {
    String timeString = "23:45";
    SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
    Date date = timeFormat.parse(timeString);
        
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MINUTE, 10);
    String result = timeFormat.format(cal.getTime());
    assertEquals("23:55", result);
}

在此代码中,我们创建一个包含时间值的字符串变量。然后,我们创建一个SimpleDateFormat对象,用于将时间格式化为小时和分钟的表示形式。

接下来,我们创建一个Date对象,并调用parse()方法在timeFormat上,将字符串时间转换为Date对象以便进一步处理。

此外,我们创建一个Calendar对象,并在其上调用setTime()方法。这个方法接受我们之前创建的Date对象。然后,我们在Calendar对象上调用add()方法,向时间添加10分钟。

最后,我们断言新时间等于预期时间。

3. 使用日期时间API

日期时间API可以轻松地将时间字符串解析为LocalTime。此外,它还提供了方便进行时间算术操作的方法。

以下是使用日期时间API在时间字符串上添加分钟的示例代码:

@Test
void givenTimeStringUsingLocalTime_whenIncrementedWith10Minutes_thenResultShouldBeCorrect() {
    String timeString = "23:45";
    LocalTime time = LocalTime.parse(timeString);
    LocalTime newTime = time.plusMinutes(10);
    String result = newTime.toString();
    assertEquals("23:55", result);
}

在这里,我们创建一个时间字符串,并将其传递给一个LocalTime对象。LocalTime类提供了多种方法来进行时间操作。接着,我们调用time上的plusMinutes()方法,向其中添加10分钟。

最后,我们断言新时间等于预期时间。

4. 总结

在这篇文章中,我们学习了两种向时间字符串添加分钟的方法。与旧版的Date API相比,日期时间API使得时间的处理和算术运算更加便捷。

如往常一样,示例代码的源代码可在GitHub上找到。