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

约翰·杜

我创建了一种方法,用于在数据导入(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);
} 
幽灵猫

谈到40万条记录,在此处进行一些“裸手”优化可能是合理的。

例如:如果您输入的字符串在位置5处带有“-”,则您知道唯一(可能)匹配的格式将是“ yyyy-MM-dd”。如果是 ”。”; 您知道这是从yyyy开始的另一种格式。

因此,如果您真的想进行优化,则可以获取该字符并查看其含义。可以节省3次尝试使用错误格式的解析!

除此之外:我不确定是否可以确定“ dd”是否表示您的其他日期以“ 01”开头...还是“ 1.1.2016”也是可能的。如果您所有的日期都始终使用两位数字作为dd / mm;那么您可以重复该游戏-就像您在位置3上获取的那样-在“ dd ....”和“ dd -....”之间进行选择。

当然; 有一个缺点-如果您遵循这个想法,那么您就很容易将期望的格式“硬编码”到您的代码中;因此添加其他格式将变得更加困难。另一方面; 您会节省很多。

最后:可能会大大加快速度的另一件事是使用流操作来读取/解析该信息;因为这样您便可以研究并行流,并简单地利用现代硬件并行处理4、8、16日期的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JAXB:编写从XML文件解析不同格式的日期的方法的最佳方法是什么

使用Python解析北欧格式(首先是DMY,然后是YMD)的日期的最佳方法

解析JSON-ish数据属性的最佳方法,例如Knockout.js中的绑定参数格式?

将批量数据导入ArangoDB的最佳方法

从php导入数据到tableview的最佳方法

在Swift中导入数据的最佳方法?

使用PHP / MySQL数据库语句进行XML解析,并在mysql阿拉伯字母内导入日期格式

解析MM / DD / YY格式的日期并将其调整为当前/上个世纪的最佳方法是什么?

解析syslog日期格式的简单方法

处理从DatePicker接收的日期/时间数据的最佳格式

在iOS Swift中解析JSON格式的最佳方法是什么?

将数字日期转换为文本格式的最佳方法

从无格式字符串创建日期对象的最佳方法

radDateTimePicker获取和格式化日期值的最佳方法?

将嵌套JSON数据导入数据框或字典的最佳方法?

导入CSV数据时解析带日期的标题行

在Golang中解析日期和时间的最佳方法

转换日期期间以显示日期格式

无法解析的日期格式

碳解析日期格式

无法将数据集解析为日期格式

使用Spark Scala解析String列以获取日期格式的数据

将Google Cloud SQL数据导入BigQuery的最佳方法

在C#中将数据导入Cassandra Cluster的最佳方法

将大数据文件导入MysQL的最佳方法

将Date解析为MS JSON日期格式的Java方法

最佳的JavaScript日期解析器和格式化程序?

解析此数据的最佳Pythonic方法是什么?

解析数据文件中json对象的最佳方法

TOP 榜单

热门标签

归档