【问题标题】:Parsing a date works in IDE but not when running from a runnable JAR file解析日期在 IDE 中有效,但在从可运行的 JAR 文件运行时无效
【发布时间】:2014-10-06 09:29:18
【问题描述】:

我遇到了日期解析问题。

我从 JXDatePicker 获取日期,需要重新格式化它们以便向 MySQL 发送查询。

我从 JXDatePicker 获得的日期格式如下:

Mon Oct 06 00:00:00 IDT 2014

我使用这个简单的日期格式来解析它:

SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

我也试过了:

SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");

还有:

SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");

当我在 Eclipse 上运行它时,95% 的时间它工作正常,有时我会收到解析错误(如下所列),但是当我重新启动我的应用程序时,它在相同的日期和相同的输入上工作得很好。

但是,当我将我的应用程序编译成一个可运行的 jar 以便真正开始使用它时,我 100% 的时候会收到以下错误:

java.text.ParseException: Unparseable date: "Mon Oct 06 00:00:00 IDT 2014"
at java.text.DateFormat.parse(Unknown Source)
at DatePicker.findRequests(DatePicker.java:385)

快把我逼疯了!!!

有人对我有想法吗?

我怀疑它以某种方式与时区有关。

谢谢,

戴夫。

【问题讨论】:

    标签: java datepicker timezone simpledateformat parseexception


    【解决方案1】:

    根本不要解析来自JXDatePicker 的结果。它允许您以java.util.Date(和时区)的形式直接获取值。

    尽可能避免与文本相互转换。在这种情况下,不需要文本 anywhere - 您可以以“本机”格式从 JXDatePicker 中获取数据,并且在为 MySQL 指定值时也应该这样做 - 使用使用参数化 SQL 的预处理语句并调用 setDatesetTimestamp 来指定值。

    【讨论】:

    • 谢谢伙计,这就是我最初尝试做的,但找不到方法。在你写完之后,我又看了一遍,发现了:) 我更喜欢只使用它们的原生长时间戳格式的日期,只是认为这是不可能的。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多