![](/img/trans.png)
[英]How to parse date to EEE MMM dd HH:mm:ss zzz yyyy format?
[英]“EEE MMM dd HH:mm:ss ZZZ yyyy” date format to java.sql.Date
我正在尝试将EEE MMM dd HH:mm:ss ZZZ yyyy
为YYYY-MM-DD
格式,因此我可以将其插入到 MySQL 数据库中。 我没有收到任何错误,但是插入到我的数据库中的日期是错误的,并且每一行都相同......
String date = Sat Mar 04 09:54:20 EET 2017;
SimpleDateFormat formatnow = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");
SimpleDateFormat formatneeded=new SimpleDateFormat("YYYY-MM-DD");
java.util.Date date1 = (java.util.Date)formatnow.parse(date);
String date2 = formatneeded.format(date1);
java.util.Date date3= (java.util.Date)formatneeded.parse(date2);
java.sql.Date sqlDate = new java.sql.Date( date3.getTime() );
pst.setDate(1, sqlDate);
LocalDate date4 = ZonedDateTime
.parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
.toLocalDate();
java.sql.Date date5 = java.sql.Date.valueOf(date4);
我正在使用java.time
包中的现代类。 您会注意到代码不仅更简单,一旦您熟悉了新类的流畅编写风格,它也会更清晰。
如果您想要 100% 现代,您还应该检查您最新的 MySQL JDBC 驱动程序是否不直接接受LocalDate
而不转换为java.sql.Date
。 这应该。
需要注意的几个细节
Locale.ROOT
用于语言环境中性语言环境(它说英语)。Europe/Bucharest
这样的长时区 ID 或像+02:00
这样的 UTC 偏移量。 无论您使用DateTimeFormatter
还是SimpleDateFormat
这些点都是有效的。
如果您不能或不想继续使用推荐的较新类,则代码的修复方法是:
SimpleDateFormat formatnow
= new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");
我使用小写的zzz
因为这被记录为匹配三个字母的时区名称,我知道大写的ZZZ
也可以使用。 我添加了语言环境。 也许最重要的是,在所需的格式中,我已将YYYY
(基于周的年份)更改为yyyy
(日历年)并将DD
(年份中的某天)更改为dd
(月份中的某天)。 所有这些字母都在文档中。
我知道这个问题与 java.sql.Date 相关,但作为附加信息,如果您想将日期转换为 LocalDate 那么下面的代码可能会有所帮助:
private LocalDate getLocalDate(String date){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd hh:mm:ss Z yyyy", Locale.getDefault());
return LocalDate.parse(date, formatter);
}
一旦获得 LocalDate,就可以将其转换为任何格式。 正如问题所期望的那样 yyyy-MM-dd 然后只需在 LocalDate 对象上调用 toString() 。
LocalDate curr = LocalDate.now();
System.out.println(curr.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
System.out.println(curr.toString());
它将显示类似“2019-11-20”的日期。
希望这对某人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.