You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:52:07