如何将2013-06-24转换为2013年6月24日?我使用下面的代码。
date1="2013-06-24";
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");
try{
date2 = d.parse(date1);
}catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
但是我得到这个错误“java.text.ParseException:无法解析的日期:“2013年6月24日”(偏移量4)
9条答案
按热度按时间xxls0lw81#
您需要两个
DateFormat
示例:一个用于解析原始的String
,另一个用于输出您想要的结果。0sgqnhkj2#
第一个问题是,你对String和Date使用了不同的分隔符。因此,你可以在String中使用“2013-06-24”到“2013 06 24”,或者使用new SimpleDateFormat(“dd MMM yyyy”)到new SimpleDateFormat(“dd-MMM-yyyy”)。
第二个问题是,你不能像这样直接改变格式,在String中,你有year-month-date格式,所以首先用相同的格式创建一个Date对象,然后将它改为你想要的格式,如下所示:
vh0rcniy3#
变更
与
你必须遵循date1模式。然后你可以用
jaxagkaj4#
doinxwow5#
Java.时间
java.util
日期-时间API及其对应的解析/格式化类型SimpleDateFormat
已经过时且容易出错。2014年3月,modern Date-Time API作为Java 8标准库的一部分发布,取代了传统的日期-时间API,从那时起,强烈建议切换到java.time
,现代的日期-时间API。使用
java.time
* 的解决方案java.time
API基于ISO 8601 standards,不需要指定DateTimeFormatter
来解析已经是ISO 8601格式的日期/时间字符串。您给定的日期字符串2013-06-24
已经是ISO 8601格式。您需要DateTimeFormatter
只是为了格式化将通过解析给定的日期字符串获得的LocalDate
。注意:日期时间解析/格式化接口对
Locale
敏感,因此对never use date-time parsing/formatting APIs without a Locale敏感。演示:
输出:
ONLINE DEMO
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。
g6ll5ycj6#
kadbb4597#
mzillmmw8#
下面是一个通用的方法,您可以使用它来获取所需的格式。
用法- getRequiredDateFormat(“2019-09-03”,“yyyy-MM-dd”,“dd MM yyyy”)
yrdbyhpb9#
字符串idl =“2021年6月30日”;字符串dl=空;new SimpleDateFormat(“yyyy-MM-dd”);int getName = new getName(“getName”);int n = inputFormat.parse(int n);d1 = outputFormat.format(date);System.out.println(dl);} catch(ParseException e1){ e1.printStackTrace();}