我有一个表示日期的字符串
字符串日期\u s=“2011-01-18 00:00:00.0”;
我想将其转换为日期
并以YYYY-MM-DD
格式输出
2011-01-18
我怎样才能做到这一点
好的,根据我在下面找到的答案,我尝试了以下几点:
字符串日期\u s=“2011-01-18 00:00:00.0”;
SimpleDataFormat dt=新的SimpleDataFormat(“YYYY-mm-dd hh:mm:ss”);
日期=dt.parse(日期);
SimpleDataFormat dt1=新的SimpleDataFormat(“YYYY-mm-dd”);
System.out.println(dt1.format(date));
但它输出的是02011-00-1
,而不是所需的2011-01-18
。我做错了什么
使用LocalDateTime\parse()
(或ZonedDateTime#parse()
如果字符串恰好包含时区部分)以特定模式将字符串
解析为LocalDateTime
String oldstring=“2011-01-18 00:00:00.0”;
LocalDateTime datetime=LocalDateTime.parse(模式的oldstring、DateTimeFormatter.of(“yyyy-MM-dd HH:MM:ss.S”);
使用LocalDateTime\format()
(或ZonedDateTime#format()
)以特定模式将LocalDateTime
格式化为字符串
String newstring=datetime.format(模式的DateTimeFormatter.of(“yyyy-MM-dd”);
System.out.println(新闻字符串);//2011-01-18
或,当您还没有使用Java 8时,请使用SimpleDataFormat#parse()
以特定模式将字符串
解析为日期
String oldstring=“2011-01-18 00:00:00.0”;
日期日期=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss.S”).parse(旧字符串);
使用SimpleDateFormat#format()
以特定模式将日期格式化为字符串
String newstring=new SimpleDateFormat(“yyyy-MM-dd”)。格式(日期);
System.out.println(新闻字符串);//2011-01-18
另见:
更新:根据您失败的尝试:模式区分大小写。阅读java.text.simpleDataFormat
javadoc各个部分代表什么。因此,代表月份的M
,代表分钟的M
。此外,年份是四位数的,而不是五位数的。仔细看看我在上面发布的代码片段