pig中的自由日期/时间解析

ggazkfy8  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(398)

(与joda time中的自由日期/时间解析相关)
嘿,我们正在处理一个包含混合日期格式的pig列:对于某些记录 09/11/2004 00:00:00 ,有些记录 09/11/2004 00:00:00.000000 .
我们试着用pig11解析它 ToDate (内部使用jodatime的
DateTimeFormat.forPattern(DataType.toString(input.get(1))); MM/dd/yyyy HH:mm:ss 我们得到
Invalid format: "12/31/1969 00:00:00" is too short at org.joda.time.format.DateTimeFormatter.parseDateTime MM/dd/yyyy HH:mm:ss.000000 我们得到 Invalid format: "09/25/2009 00:00:00.000000" is malformed at ".000000" 你能建议一个同时处理这两个问题的时间格式吗?我们需要使用自定义todate函数吗?谢谢!

vc6uscn9

vc6uscn91#

你可以用 DateTimeFormatterBuilder 要通过一个可选部件实现这一点:

import org.joda.time.format.*;

class Test {
    private static final DateTimeFormatter formatter =
        new DateTimeFormatterBuilder()
            .appendPattern("MM/dd/yyyy HH:mm:ss")
            .appendOptional(DateTimeFormat.forPattern(".SSSSSS").getParser())
            .toFormatter();

    public static void main(String args[]) {
        testParse("09/11/2004 00:00:00");
        testParse("09/11/2004 00:00:00.000000");
    }

    private static void testParse(String input) {
        System.out.println(formatter.parseLocalDateTime(input));
    }
}

相关问题