如何在日期字符串中只更改年份?

ivqmmu1c  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(468)

我有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);

我基本上想改变年份而不改变月份和日期
能做到吗?

ltskdhd1

ltskdhd11#

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的信息。

wrrgggsh

wrrgggsh2#

尝试:

String[] arrOfStr = parts1[1].split("-", 2);

arrofstr[0]包含年份
现在需要将其解析为int(因为它只有4个数字)

int year = Integer.parseInt(arrOfStr[0]);

年份现在包含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);

相关问题