首页 > 解决方案 > 如何在 Java 中将日期格式转换为不同的模式

问题描述

我想从此转换日期格式EEE MMM dd HH:mm:ss zzz yyyy

喜欢这个yyyy-MM-dd

这是我从 redis 知道的数据 json

{
   "bannerId":4,
   "bannerName":"banner test test 2 123"
   "startDate":"Mon Sep 02 00:00:00 WIB 2019",
   "endDate":"Sat Sep 28 00:00:00 WIB 2019"
}

我想像下面的json一样转换startDateendDate

和我想要的 json 输出

{
   "bannerId":4,
   "bannerName":"banner test test 2 123"
   "startDate":"2019-09-02",
   "endDate":"2019-09-28"
}

到目前为止我已经尝试过了,但失败了..显示这样的错误 failed Unparseable date: \"2019-09-02\

.

这是我的代码

Banner.java

@Getter @Setter @NoArgsConstructor
public class Banner {

    private Integer bannerId;
    private String bannerName;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "EEE MMM dd HH:mm:ss zzz yyyy", timezone = "Asia/Jakarta")
    private Date startDate;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "EEE MMM dd HH:mm:ss zzz yyyy", timezone = "Asia/Jakarta")
    private Date endDate;
}

BannerController.java

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
listRedis = bannerService.loadBannerRedis(Constant.DVC_BANNER_MOBILE, Constant.LOC_BANNER_HOME, Constant.PST_BANNER_MAIN);
    for (Banner banner : listRedis) {

         banner.setStartDate(
              new SimpleDateFormat("yyyy-MM-dd").parse(
                  Convert.convertDate(dateFormat.format(banner.getStartDate()))));
    }

转换.java

public static String convertDate(String dd) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
        Date date = (Date)formatter.parse(dd);     

        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        String formatedDate = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DATE);
        return formatedDate;
}

所以,我需要解决方案我该怎么办??

标签: javaspringspring-bootdate

解决方案


你可以使用LocalDateTime这个,你应该避免使用遗留Date

 String str = "Mon Sep 02 00:00:00 WIB 2019";
            LocalDateTime parse = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"));
            System.out.println(parse);
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String format = parse.format(dateTimeFormatter);
            System.out.println(format);  
            // out-put 2019-09-02

您也可以使用相同的@JsonFormat(pattern = "yyyy-MM-dd")


推荐阅读