发布日期:2018-03-26
在Java字符串中更改日期格式+ 查看更多
在Java字符串中更改日期格式
+ 查看更多
发布日期:2018-03-26 10:52
分类:JAVA
浏览次数:338
我有一个String类型对象表示日期。
String date_s = "2011-01-18 00:00:00.0";
我想将其转换为Date类型并以YYYY-MM-DD格式输出。
2011-01-18
我该如何实现呢?
好吧,根据下面的回答,我试了如下代码:
String date_s = " 2011-01-18 00:00:00.0"; SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); Date date = dt.parse(date_s); SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd"); System.out.println(dt1.format(date));
但它输出02011-00-1而不是期望的2011-01-18。我哪里出了问题?
回答
使用LocalDateTime#parse()(或者ZonedDateTime#parse()如果字符串恰好包含时区部分)以一种特定的模式将String对象解析为LocalDateTime对象。
String oldstring = "2011-01-18 00:00:00.0"; LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));
使用LocalDateTime#format()(或者ZonedDateTime#format())以一种特定的模式将LocalDateTime对象格式化为String对象。
String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(newstring); // 2011-01-18或者,如果你还没有使用Java 8的话,使用SimpleDateFormat#parse()以一种特定的模式将String对象解析为Date对象。
String oldstring = "2011-01-18 00:00:00.0"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring);使用SimpleDateFormat#format()以一种特定的模式将Date对象格式化为String对象。
String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date); System.out.println(newstring); // 2011-01-18
也可以看看:
Java string to date conversion
更新:根据你的失败尝试,模式区分大小写。阅读java.text.SimpleDateFormat这份Java文档查看各个部分分别代表什么,例如,M代表月,m代表分钟。此外,年是四个数字yyyy,不是五个数字yyyyy。仔细看看我在上面发布的代码片段。