java - 导入数据期间解析日期格式的最佳方法

标签 java date parsing date-format

我创建了在数据导入期间解析 View 不同日期格式的方法(400 K 记录)。我的方法捕获 ParseException 并尝试在日期不同时使用下一种格式解析日期。

问题:在数据导入期间设置正确的日期格式是否更好(更快)?

private static final String DMY_DASH_FORMAT = "dd-MM-yyyy";
private static final String DMY_DOT_FORMAT = "dd.MM.yyyy";
private static final String YMD_DASH_FORMAT = "yyyy-MM-dd";
private static final String YMD_DOT_FORMAT = "yyyy.MM.dd";
private static final String SIMPLE_YEAR_FORMAT = "yyyy";
private final List<String> dateFormats = Arrays.asList(YMD_DASH_FORMAT, DMY_DASH_FORMAT,
        DMY_DOT_FORMAT, YMD_DOT_FORMAT);

private Date parseDateFromString(String date) throws ParseException {
    if (date.equals("0")) {
        return null;
    }
    if (date.length() == 4) {
        SimpleDateFormat simpleDF = new SimpleDateFormat(SIMPLE_YEAR_FORMAT);
        simpleDF.setLenient(false);
        return new Date(simpleDF.parse(date).getTime());
    }
    for (String format : dateFormats) {
        SimpleDateFormat simpleDF = new SimpleDateFormat(format);
        try {
            return new Date(simpleDF.parse(date).getTime());
        } catch (ParseException exception) {
        }
    }
    throw new ParseException("Unknown date format", 0);
} 

最佳答案

如果您运行单线程,一个明显的改进是创建 SimpleDateFormat对象仅一次。在多线程情况下使用 ThreadLocal<SimpleDateFormat>是必需的。

还修复异常处理。看起来它是由不应该信任导入任何数据的人编写的。

关于java - 导入数据期间解析日期格式的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39597959/

相关文章:

java - 正则表达式帮助

java - 如何为输入错误日期的用户正确创建循环?

android - 无法解析 Azure 云存储中的连接字符串

c - ASCII 到二进制表示形式(大端)

java - 为什么只有 1 个 java 源文件能够写入同一个文件?

java - 这对 sftp : java or shell script? 更有效

java - 新的构造函数和函数

Bash 日期/时间算法

javascript - 如何考虑时区创建 JS 日期对象 Node.js/javascript

parsing - 将 EBNF 转换为 BNF 以用于 LALR 解析器