我已经尝试了下面的代码,但是没有用。
请解释为什么它不起作用。
public static void main(String[] args) {
String ti = "11:30 PM, Sun 07 Oct 2018";
String sformat = "h:m a, E dd M yyyy";
String cformat = "hh:mm a";
String d = dateFormater(ti, cformat, sformat);
System.out.println(d);
}
public static String dateFormater(String dateFromJSON,
String expectedFormat, String oldFormat) {
SimpleDateFormat dateFormat = new SimpleDateFormat(oldFormat);
Date date = null;
String convertedDate = null;
try {
date = dateFormat.parse(dateFromJSON);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(expectedFormat);
convertedDate = simpleDateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return convertedDate;
}
答案 0 :(得分:1)
您的日期格式不正确。请使用以下格式。
String sformat= "hh:mm a, EEE dd MMM yyyy";
答案 1 :(得分:1)
您的模式需求
MMM
,因为月份是短字母格式(M
仅用于月份编号,MMMM
是长字母格式)
String sformat = "h:m a, E dd MMM yyyy";
您应该考虑使用新的time
API:java.time
,因为它更易于使用,并且不需要额外的强制性try/catch
:
public static String dateFormater(String dateFromJSON, String expectedFormat, String oldFormat) {
LocalDateTime date = LocalDateTime.parse(dateFromJSON, DateTimeFormatter.ofPattern(oldFormat, Locale.ENGLISH));
String newStr = date.format(DateTimeFormatter.ofPattern(expectedFormat, Locale.ENGLISH));
return newStr;
}
或单行:
public static String dateFormaterSh(String dateFromJSON, String expectedFormat, String oldFormat) {
return LocalDateTime.parse(dateFromJSON, DateTimeFormatter.ofPattern(oldFormat, Locale.ENGLISH))
.format(DateTimeFormatter.ofPattern(expectedFormat, Locale.ENGLISH));
}