我试图用正斜杠替换连字符,但它导致unparseable date exception
String test = "2014-04-01 05:00:00";
Date date = new SimpleDateFormat("YYYY/MM/dd hh:mm:ss", Locale.ENGLISH).parse(test);
System.out.println(date);
我有必要的值为它转换,有人能告诉我为什么它返回一个错误?加上我想在格式的末尾加上一个am/pm marker
,这可能吗?
您需要首先以正确的格式解析String
到Date
,如输入String
yyyy-MM-dd HH:mm:ss
则可以使用format()以其他格式打印
yyyy/MM/dd hh:mm:ss
和不期望Date
类的toString()
方法返回格式化值,它是固定实现
From SimpleDateFormat
:
Letter Date or Time Component <br /> y Year <br /> Y Week year H Hour in day (0-23) h Hour in am/pm (1-12)
因此,使用yyyy
表示年,使用HH
表示一天中的小时。此外,您通过-
分隔字段,而不是通过/
:
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).parse(test);
这样做之后,正如@JigarJoshi所怀疑的那样,您可以将Date
格式化为另一种格式:
String dateInDesiredFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH).format(date);
或者写成一个完整的代码块:
DateFormat parse = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH);
DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH);
String test = "2014-04-01 05:00:00";
Date date = parse.parse(test);
System.out.println(format.format(date));
产生以下输出:
2014/04/01 05:00:00 AM
String test = "2014-04-01 05:00:00";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date oldDate = formatter.parse(test);
formatter.applyPattern("yyyy/MM/dd HH:mm:ss a");
Date newDate = formatter.parse(formatter.format(oldDate));
System.out.println(formatter.format(newDate));