首页 > 解决方案 > 如何使用以当前日期为输入的java获取下一个日期

问题描述

为了我的需要,鉴于我有当前日期,我必须将日期更新为第二天

我用来获取当前日期的方法


       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT-4:00"));
        return sdf.format(new Date());

现在我想使用这个作为输入来获取下一个日期我试过这个

  System.out.println(Integer.parseInt(getOrderDate())+1);

我收到此错误

java.lang.NumberFormatException: For input string: "2020-01-06T09:46:29-0400

有人可以帮助并让我知道。

标签: javanumberformatexception

解决方案


日期时间 APIjava.util及其格式化 APISimpleDateFormat已过时且容易出错。建议完全停止使用它们并切换到现代日期时间 API

如果您正在获取 的对象java.util.Date,请将其转换为java.time.Instant,然后OffsetDateTime通过应用所需的区域偏移量从中获取。最后,用于OffsetDateTime#plusDays获取另一个添加了所需天数的实例。

演示:

import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(202, 0, 6, 9, 46, 29);
        System.out.println(getNextDate(calendar.getTime()));
    }

    public static OffsetDateTime getNextDate(Date date) {
        return date.toInstant().atOffset(ZoneOffset.of("-04:00")).plusDays(1);
    }
}

输出:

0202-01-07T05:46:29.946-04:00

从Trail: Date Time了解现代日期时间 API 。


推荐阅读