如何解决如何仅更改日期字符串中的年份?
我有 java 日期字符串。
如何在不更改月份和日期的情况下更改年份。
例如
parts1[1]= 2020-1-2;
parts1[2]= 13:48:21;
CreatedDate = parts1[1]+" "+parts1[2];
System.out.println(CreatedDate);
我想改成
parts1[1]= 2021-1-2;
parts1[2]= 13:48:21;
CreatedDate = parts1[1]+" "+parts1[2];
System.out.println(CreatedDate);
我基本上是想在不改变月份和日期的情况下改变年份
可以吗?
解决方法
java.time
您不必拆分字符串然后组合各个部分。您可以将整个字符串解析为 LocalDateTime
,然后使用 LocalDateTime#withYear
获取具有指定年份的新实例。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String creationDateTime = "2020-1-2 13:48:21";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-M-d H:m:s",Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(creationDateTime,dtf);
System.out.println(ldt);
ldt = ldt.withYear(2021);
// Default format
String updatedDateTime = ldt.toString();
System.out.println(updatedDateTime);
// Custom format
updatedDateTime = ldt.format(dtf);
System.out.println(updatedDateTime);
}
}
输出:
2020-01-02T13:48:21
2021-01-02T13:48:21
2021-1-2 13:48:21
从 Trail: Date Time 了解有关 java.time API 的更多信息。
,试试:
String[] arrOfStr = parts1[1].split("-",2);
arrOfStr[0] 包含年份
现在你需要将它解析为一个int(因为它只有4位数字)
int year = Integer.parseInt(arrOfStr[0]);
year 现在包含数字 2020。
你可以做到
year++;
将其值增加 1
并把它放回字符串格式做:
arrOfStr[0] = "" + year;
或
arrOfStr[0] = String.valueOf(year);
把它们放在一起做这个
parts1[1]= arrOfStr[0] + "-" arrOfStr[1]; // 2021-1-2
最后应该是这样的:
parts1[1]= 2020-1-2;
parts1[2]= 13:48:21;
String[] arrOfStr = parts1[1].split("-",2);
int year = Integer.parseInt(arrOfStr[0]);
year++;
arrOfStr[0] = "" + year;
parts1[1]= arrOfStr[0] + "-" + arrOfStr[1];
CreatedDate = parts1[1]+" "+parts1[2];
System.out.println(CreatedDate);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。