java - 如何在 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一样转换startDate和endDate
和我想要的 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;
}
所以,我需要解决方案我该怎么办??
解决方案
你可以使用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")
推荐阅读
- generics - Kotlin:在函数中传递用于 filterIsInstance 的类类型
- python - 使用 fipy 跨域耦合 pdes
- xml - 如何在 VSCode 中关闭 XML 文件的源 XSD
- database - 除了字段名称和空 {} 之外的值在 mongoDB 中指定什么?
- react-native - 未能加载 Analytics 本机模块
- json - 从 Sharepoint 复制到 Azure Blob 存储时,Json 文件中的编码错误
- google-apps-script - 在 Google 表格中通过电子邮件发送产品数量
- python - 在 Python 中按 ID 有效地计算 ngram
- if-statement - Discord.js v12 Bot Say Command 在不同的频道(通过 args?)
- pandas - 格式化 pandas 对象列