我需要将日期(2011-Jan-01)转换为任何simpledateformats格式。
Eclipse设计器使用Java 7。
String pDate = obj.getJSONArray("product").getJSONObject(i).getString("createdDate");
//"2011-Jan-01" - date format.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
try {
Date fDate = format.parse(pDate);
System.out.println("jsonDate: " + fDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("pDate: " + pDate);//"2011-Jan-01"
errors:
error:java.text.ParseException:Unparseable date:"2011-Jan-01"
error: at java.text.DateFormat.parse(DateFormat.java:348)
我在上面遇到错误。
您的解析格式不应包含时间(因为您的输入仅是日期),并且您需要另一个格式调用来生成所需的输出。类似,
String pDate = "2011-Jan-01";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd");
try {
Date fDate = format.parse(pDate);
System.out.println(new SimpleDateFormat("dd-MM-yyyy").format(fDate));
} catch (ParseException e) {
e.printStackTrace();
}
输出
01-01-2011
将SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
更改为SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd");
这适用于Java 7:
DateTimeFormatter jsonDateFormatter = DateTimeFormatter.ofPattern("uuuu-MMM-dd", Locale.ENGLISH);
DateTimeFormatter outputDateFormatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
String pDate = "2011-Jan-01";
LocalDate fDate = LocalDate.parse(pDate, jsonDateFormatter);
pDate = fDate.format(outputDateFormatter);
System.out.println("Formatted date: " + pDate);
摘录的输出是:
格式化日期:2011年1月1日
除非有充分的理由,否则,我建议您对用户的语言环境使用Java的一种内置格式,而不要对输出格式进行硬编码。例如:
DateTimeFormatter outputDateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
.withLocale(Locale.UK);
现在输出是:
格式化日期:2011年1月1日
是的,java.time在Java 7上运行良好。它至少需要Java 6。
org.threeten.bp
导入日期和时间类。java.time
。java.time
的向后移植到Java 6和7(JSR-310的ThreeTen)。