java - 解析日期、CET 与 CEST、无效时区、不可解析

标签 java sqlite date codenameone

我正在使用 shannah 的数据访问库通过他的 DAO 接口(interface)访问我的对象。

当我的东西在数据库中时调用 unmap 方法时,我在解析日期值时遇到了一个非常奇怪的行为。它仅在 CEST(中欧夏令时)时失败

我尝试使用 NumberUtil.dateValue 方法来解析它,但它仍然失败...

 java.lang.RuntimeException: Failed to parse string date format Thu Mar 31 00:00:00 CEST 2016.  Could not find appropriate format parser.

我将 DateFormat 定义为这些

        dateFormats[0] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
        dateFormats[1] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
        dateFormats[2] = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy");
        dateFormats[3] = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");

还尝试修剪字符串,但没有帮助。

我没有想法,因为 SDF 没有像普通 JDK 那样的构造函数,第二个参数是 Locale。

最佳答案

// Method that take date time string , input pattern and out put pattern,that return formatted date as string

public String parseDate(String dateTime,String inputPattern, String outputPattern) throws ParseException {

    SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern, Locale.ENGLISH);
    SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);

    Date date = inputFormat.parse(dateTime);
    String str = outputFormat.format(date);

    return str;
}
// call method
String date = parseDate("Thu Mar 31 00:00:00 CEST 2016" ,"EEE MMM dd HH:mm:ss zzz yyyy", "MM-dd-yyyy:HH:mm:ss");

// print date
System.out.println(date);

// Result 
03-31-2016:03:00:00

关于java - 解析日期、CET 与 CEST、无效时区、不可解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963229/

相关文章:

date - logstash将日期从MMM dd YYYY转换为mm dd YYYY?

Java Collections.sort 不调用比较方法

java - 乘以两位小数 - Java

android - 是否可以根据数组中元素的数量在运行时创建sqlite表

objective-c - sqlite fts 不适用于临时版本的应用程序,但仅适用于从 xcode 启动的版本

javascript - 无法使用 moment.js 增加日期

javascript - JavaScript 中的日期问题

java - XSSFClientAnchor 的最大 dy 值

java - libgdx 中重叠时出现 NullPointerException (Java)

android - 更新查询在 Android 中不起作用