在Java字符串中更改日期格式

问题:

我有一个代表日期的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.text.SimpleDateFormat javadoc各个部件代表什么。所以例如M几个月,m分钟。而且,存在四位数yyyy而不是五位yyyyy的年份。仔细看看我上面发贴的代码段。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Change date format in a Java string

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

58 − = 55