【发布时间】:2019-03-19 11:29:13
【问题描述】:
我写了一个解析日期的方法。当我将以下日期作为参数2019-03-05 06:15:00 传递时,我得到一个java.text.ParseException: Unparseable date: "2019-03-05 06:15:00"。
逻辑有什么问题?
public String convertDate(String val) throws ParseException {
return "cast('" + new SimpleDateFormat("yyyy-MM-dd HH:mm:SS").format(
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'").parse(val)) + "' as ts)";
}
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat。这个类是出了名的麻烦和过时。而是使用来自java.time, the modern Java date and time API 的OffsetDateTime和DateTimeFormatter。 -
也不要在格式模式字符串中使用
'Z'来解析或打印Z作为文字。Z(读作Zulu)表示UTC,需要这样解析或打印,否则你会得到错误的结果。 -
您真正想要获得什么?似乎您正在动态生成 SQL 表达式或类似的表达式。对于绝大多数目的来说,这将比你真正需要的更复杂。见XY problem。
标签: java date simpledateformat