java - 如何使用以当前日期为输入的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
有人可以帮助并让我知道。
解决方案
日期时间 APIjava.util
及其格式化 APISimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到现代日期时间 API。
- 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。
- 如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring和How to use ThreeTenABP in Android Project检查Java 8+ APIs available。
如果您正在获取 的对象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 。
推荐阅读
- android-sqlite - 如何在查询 SQLite 查询语句中使用两个运算符?
- c - 为什么代码不反转字符串?
- c# - 使用 Microsoft.AspNet.WebApi.Versioning 的 Web API 2 版本控制
- java - azure-cosmosdb-java 中的“分组依据”功能
- python - 解释器忽略了我的 python 代码中的部分函数
- mercurial - 如何解决“hg verify”揭示的“完整性错误”
- linux - 如何从 Bash 脚本中列出目标 PID 的孙 PID?
- haskell - 在haskell中如何将值解析为这个插入函数
- python-3.x - .destroy() 之后是否有可能“恢复”按钮?
- php - Liskov 替换原则和 PHP 接口