【问题标题】:Date parsing in java/filejava/文件中的日期解析
【发布时间】:2013-11-19 11:42:50
【问题描述】:

我有一个文件,其中第 n 列有日期。 像下面这样说(每列除以',')

1234,3-23,34,kjiio,20131015,AS

虽然我假设日期是“YYYYMMDD”来解析这些数据,但我能够得到很好的结果。 但我的问题是日期不是唯一的,它有以下格式,

2013-10-15
10152013
2013-10-15T00:00:00.000

所以我的要求是将该文件中的所有记录设为单一格式,或者是否有任何 java api 将任何格式的日期作为 aboce 并以我要求的格式给出。

谢谢!

【问题讨论】:

标签: java unix


【解决方案1】:

如果您可以通过位置识别时间戳,并且知道所有格式,则可以检查适用的格式:

String dateString = "...";
Date date;
if (dateString.contains("-")) {
    if (dateString.contains(":")) {
        // Format 1: YYYY-MM-DDTHH-mm.sss
        date = parseFormatOne(dateString);
    } else {
        // Format 2: YYYY-MM-DD
       date = parseFormatTwo(dateString);
    }
} else {
    // Format 3: DDMMYYYY
    date = parseFormatThree(dateString);
}

然后您可以 a) 将文件中的值替换为根据您的定义格式化的值,或者 b) 简单地处理已解析的 Date

【讨论】:

    【解决方案2】:

    如果您知道它是哪一列,您可以使用分隔符拆分字符串并从结果数组列表中获取第 n 个条目,否则您必须使用 RegEx 来查找它。

    至于同质化:如果他们编写它的方式数量有限(例如,如果只有这 3 种方式),您可能只想自己将它们解析为日期。

    【讨论】:

    • 我知道它的列,它总是第10列,以单一日期格式制作记录,您的意思是编写一个java程序来读取该文件,逐个获取记录,获取第 10 列,使用 DATE API 对其进行格式化并写回另一个文件?
    • 我要写的代码与 Robin Krahl 的代码非常相似(在下面?)。但基本上:是的 - 你想按照你描述的那样去做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多