为了我的需要,我必须更新日期到第二天,因为我有目前的日期
我用来获取当前日期的方法
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
有人能帮忙让我知道吗。
4条答案
按热度按时间tcbh2hod1#
您必须添加设置日期的日期:
为此,可以使用如下方法:
a1o7rhls2#
首先,不要把你的订单日期放在一个字符串中。既然你想订时间,就把它放在
Instant
. 一Instant
是一个独立于时区或utc偏移的时间点(有人说是utc)。您可以随时格式化成一个字符串在用户的时区稍后当您需要它的表现。它和数字和布尔值一样,你不能把它们保存在字符串中(我希望如此)。其次,使用java.time进行日期和时间工作。这个
Instant
我提到的类属于java.time。第三,不要假装gmt-4:00是时区。这是格林威治时间的偏移量。您的用户可能会在夏季时间(dst)开始或结束的任何时候使用不同的gmt偏移量,或者政客们只是改变了他们关于gmt偏移量属于哪个的想法。因此,请使用适当的时区id,如美国/巴巴多斯。格式为地区/城市。
所以你的方法很简单:
为了增加一天——为了得到明天相同的时间——你首先需要确定一个时区,因为在某些时区,一天有时可能长达23或25个小时。我想你应该考虑到这一点,而不是盲目地增加24小时。例如:
刚才运行时的输出:
2021-01-07t19:01:39.281591+02:00
我正在利用格式化程序是内置的这一事实。
链接
oracle教程:date time解释如何使用java.time。
wrrgggsh3#
首先,如果您使用Java8或更高版本,我强烈建议不要使用过时的类
java.util.Date
然后切换到软件包java.time
. 你可以用classZonedDateTime
或任何“兄弟”,如LocalDateTime
或者其他人。还有这个包,您可以使用类datetimeformatter将日期格式化为字符串。此外,它也很容易添加或减去任何时间单位(如天,分钟,月等。。。通过plusdays()等方法。但是,在您的情况下,您需要更改getorderdate方法以接收作为参数的日期。将日期传递给方法,然后在那里将其转换为字符串。至于给约会增加一天,你可以这样做:
kpbpu0084#
api的日期时间
java.util
以及它们的格式化api,SimpleDateFormat
过时且容易出错。建议完全停止使用它们,并切换到现代日期时间api。出于任何原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。
如果你得到一个
java.util.Date
,将其转换为java.time.Instant
然后拿到OffsetDateTime
通过应用所需的分区偏移。最后,使用OffsetDateTime#plusDays
获取另一个添加了所需天数的示例。演示:
输出:
从trail:date-time了解现代日期时间api。