gpt4 book ai didi

java - 将日期增加一天,但同时以某种方式将月份减少 1

转载 作者:行者123 更新时间:2023-12-01 19:33:27 25 4
gpt4 key购买 nike

我创建了一个函数,该函数应该在解析的日期字符串中添加一天,它的工作方式就像一个魅力,只是每次函数调用都会将月份减少一个值。我不知道为什么它会这样减少,我只是想将一天增加一天。

这是效果:

private void setTarikh() throws ParseException {
FragmentJadual parentFragment = (FragmentJadual) getParentFragment();
int lastTarikh = parentFragment.hariArray.size() - 1;
String tarikhNewData = parentFragment.hariArray.get(lastTarikh).getTarikhHari();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd / MM / yyyy");
Date d = dateFormat.parse(tarikhNewData);
Calendar calender = Calendar.getInstance();
calender.setTime(d);
calender.add(Calendar.DATE, 1);
SimpleDateFormat sdf1 = new SimpleDateFormat("dd / MM / yyyy");
String output = sdf1.format(calender.getTime());
mNewDay = calender.get(Calendar.DAY_OF_MONTH);
mNewMonth = calender.get(Calendar.MONTH);
mNewYear = calender.get(Calendar.YEAR);
mTarikhTv.setText("" + mNewDay + " / " + mNewMonth + " / " + mNewYear);
}

我确实尝试过查看其他有问题的函数,但我什至找不到提示。请帮忙,至少确认一下这个函数本身是真的。我讨厌 bug ,但同时又爱它们..!

最佳答案

tl;博士

LocalDate
.parse(
"23/01/2020" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
.plusDays( 1 )
.toString()

2020-01-24

避免遗留日期时间类

正如其他人所说,您可能的问题是 Calendar 类使用的疯狂计数,从 1 月到 12 月运行 0-11。 从不使用Calendar类的众多原因之一。

与最早版本的 Java bundle 在一起的糟糕的日期时间类在几年前就被行业领先的 java.time 类所取代。

java.time

要解析由 / 字符分隔的日-月-年格式的字符串,请使用 DateTimeFormatter 类定义格式化模式,并解析为 本地日期

String input = "23/01/2020" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

ld.toString(): 2020-01-23

添加您的天增量。

LocalDate dayAfter = ld.plusDays( 1 ) ;

dayAfter.toString(): 2020-01-24

这已经在 Stack Overflow 上讨论过很多次了。因此,请搜索以了解更多信息。

<小时/>

Table of all date-time types in Java, both modern and legacy

<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

您可以直接与数据库交换java.time对象。使用JDBC driver符合JDBC 4.2或稍后。不需要字符串,不需要 java.sql.* 类。

从哪里获取java.time类?

Table of which java.time library to use with which version of Java or Android.

关于java - 将日期增加一天,但同时以某种方式将月份减少 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58716712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com