gpt4 book ai didi

java - 无法解析的日期 : "30-Jun-12"

转载 作者:行者123 更新时间:2023-12-02 05:53:04 25 4
gpt4 key购买 nike

我正在使用 Java 方法将日期转换为合适的格式:

private Timestamp toTimeStamp(String s) throws java.text.ParseException
{
Timestamp ts = null;
java.util.Date date = null;
if (s == null || s.trim().isEmpty()) return ts;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
date = (java.util.Date) sdf.parse(s);
ts = new Timestamp(date.getTime());

return ts;

}

当我尝试执行表单时,出现此错误:

Unparseable date: "30-Jun-12"

我尝试更改日期格式,但仍然收到此错误。你能帮我解决这个问题吗?

最佳答案

有两个问题:

  1. 您的日期格式模式错误。 yyyy-MM-dd hh:mm:ss.S 永远无法匹配 30-Jun-12。您需要dd-MMM-yy。另请参阅SimpleDateFormat javadoc .
  2. 解析日/月名称时,请确保指定与日/月名称中使用的语言相匹配的正确区域设置。您的系统默认区域设置似乎根本不是英语。

所以应该这样做:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
Date date = sdf.parse("30-Jun-12");

第三个问题,实际上更多的是设计问题,您不应该在模型/业务层的任何地方使用 java.sql.Timestamp (以及其他 SQL 特定日期类型)(您最初标记了问题 JSF)。您应该只在数据层中使用它。使用 java.util.Date 代替,并且仅在您需要将其保留在数据库中的那一刻进行转换,如下所示

preparedStatement.setTimestamp(1, new Timestamp(date.getTime()));

关于java - 无法解析的日期 : "30-Jun-12",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com