Java时间编程问题:格式化后调用minusMinutes报错,求修正方案
代码错误分析及修正方案
错误点
- 类型不匹配编译错误:
LocalDateTime.format()方法的返回值是String类型,你却把它赋值给LocalDateTime类型的变量newdatetimeobj,这是根本的类型错误,编译器会直接报错。 - 时间操作逻辑错误:格式化后的字符串只是纯文本,不具备时间对象的运算能力,无法调用
minusMinutes()方法。时间的加减操作必须在LocalDateTime这类原生时间对象上完成。
正确实现方式
正确的逻辑是:先对LocalDateTime对象执行减分钟操作,再将结果格式化为指定字符串输出。代码如下:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; class Workingg { public static void main(String[] args){ // 获取当前时间 LocalDateTime datetimeobj = LocalDateTime.now(); // 定义格式化器 DateTimeFormatter formatobj = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"); // 先执行减2分钟的时间操作 LocalDateTime newdatetimeobj = datetimeobj.minusMinutes(2); // 再将结果格式化为字符串 String wasminute = newdatetimeobj.format(formatobj); System.out.println(wasminute); } }
如果确实需要先格式化再转回时间对象操作(不推荐,属于冗余步骤),可以参考以下代码:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; class Workingg { public static void main(String[] args){ LocalDateTime datetimeobj = LocalDateTime.now(); DateTimeFormatter formatobj = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"); // 先格式化当前时间为字符串 String formattedStr = datetimeobj.format(formatobj); // 把格式化后的字符串转回LocalDateTime对象 LocalDateTime parsedDateTime = LocalDateTime.parse(formattedStr, formatobj); // 执行减2分钟操作 LocalDateTime newdatetimeobj = parsedDateTime.minusMinutes(2); // 再次格式化输出 String wasminute = newdatetimeobj.format(formatobj); System.out.println(wasminute); } }
内容的提问来源于stack exchange,提问作者working.monkey
相关产品推荐
相关产品推荐

