Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java datetimeformatter joda使用可选的毫秒解析多种utc格式_Java_Datetime_Jodatime - Fatal编程技术网

Java datetimeformatter joda使用可选的毫秒解析多种utc格式

Java datetimeformatter joda使用可选的毫秒解析多种utc格式,java,datetime,jodatime,Java,Datetime,Jodatime,我正在尝试使用joda解析多个可能的UTC时间格式,包括以下内容: DateTimeFormatter formatter; DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); builder.append(DateTimeFormat.forPattern("yyyyMMdd-HH:mm:ss.sss")); builder.append(DateT

我正在尝试使用joda解析多个可能的UTC时间格式,包括以下内容:

        DateTimeFormatter formatter;
        DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
        builder.append(DateTimeFormat.forPattern("yyyyMMdd-HH:mm:ss.sss"));
        builder.append(DateTimeFormat.forPattern("yyyyMMdd-HH:mm:ss"));
        formatter = builder.toFormatter();
        formatter.withZone(DateTimeZone.UTC);
        System.out.println(formatter.parseDateTime("20130122-12:01:59"));
我得到以下例外情况:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "20130122-12:01:59" is too short
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:873)
    at com.cme.clearing.financials.gateway.internal.config.Sample.main(Sample.java:16)
有没有办法让joda解析UTC中可选的毫秒。

有:

// Milliseconds parser
final DateTimeParser msParser = new DateTimeFormatterBuilder()
    .appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
    .toParser();

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

builder = builder.appendFixedDecimal(year(), 4)
    .appendFixedDecimal(monthOfYear(), 2)
    .appendFixedDecimal(dayOfMonth(), 2)
    .appendLiteral('-')
    .appendFixedDecimal(hourOfDay(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(minuteOfHour(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(secondOfMinute(), 2)
    .appendOptional(msParser); // <-- HERE: optional milliseconds
// builder.build().withTimeZone(DateTimeZone.UTC) will return the formatter
//毫秒分析器
final DateTimeParser msParser=新的DateTimeFormatterBuilder()
.appendLiteral('.').appendDecimal(毫秒(),1,3)
.toParser();
DateTimeFormatterBuilder=新的DateTimeFormatterBuilder();
builder=builder.appendFixedDecimal(年份(),4)
.appendFixedDecimal(monthOfYear(),2)
.appendFixedDecimal(dayOfMonth(),2)
.appendLiteral('-')
.appendFixedDecimal(hourOfDay(),2)
.appendLiteral(“:”)
.appendFixedDecimal(分钟数(),2)
.appendLiteral(“:”)
.appendFixedDecimal(secondOfMinute(),2)
.appendOptional(msParser);// 是的,有:

// Milliseconds parser
final DateTimeParser msParser = new DateTimeFormatterBuilder()
    .appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
    .toParser();

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

builder = builder.appendFixedDecimal(year(), 4)
    .appendFixedDecimal(monthOfYear(), 2)
    .appendFixedDecimal(dayOfMonth(), 2)
    .appendLiteral('-')
    .appendFixedDecimal(hourOfDay(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(minuteOfHour(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(secondOfMinute(), 2)
    .appendOptional(msParser); // <-- HERE: optional milliseconds
// builder.build().withTimeZone(DateTimeZone.UTC) will return the formatter
//毫秒分析器
final DateTimeParser msParser=新的DateTimeFormatterBuilder()
.appendLiteral('.').appendDecimal(毫秒(),1,3)
.toParser();
DateTimeFormatterBuilder=新的DateTimeFormatterBuilder();
builder=builder.appendFixedDecimal(年份(),4)
.appendFixedDecimal(monthOfYear(),2)
.appendFixedDecimal(dayOfMonth(),2)
.appendLiteral('-')
.appendFixedDecimal(hourOfDay(),2)
.appendLiteral(“:”)
.appendFixedDecimal(分钟数(),2)
.appendLiteral(“:”)
.appendFixedDecimal(secondOfMinute(),2)
.appendOptional(msParser);// 是的,有:

// Milliseconds parser
final DateTimeParser msParser = new DateTimeFormatterBuilder()
    .appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
    .toParser();

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

builder = builder.appendFixedDecimal(year(), 4)
    .appendFixedDecimal(monthOfYear(), 2)
    .appendFixedDecimal(dayOfMonth(), 2)
    .appendLiteral('-')
    .appendFixedDecimal(hourOfDay(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(minuteOfHour(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(secondOfMinute(), 2)
    .appendOptional(msParser); // <-- HERE: optional milliseconds
// builder.build().withTimeZone(DateTimeZone.UTC) will return the formatter
//毫秒分析器
final DateTimeParser msParser=新的DateTimeFormatterBuilder()
.appendLiteral('.').appendDecimal(毫秒(),1,3)
.toParser();
DateTimeFormatterBuilder=新的DateTimeFormatterBuilder();
builder=builder.appendFixedDecimal(年份(),4)
.appendFixedDecimal(monthOfYear(),2)
.appendFixedDecimal(dayOfMonth(),2)
.appendLiteral('-')
.appendFixedDecimal(hourOfDay(),2)
.appendLiteral(“:”)
.appendFixedDecimal(分钟数(),2)
.appendLiteral(“:”)
.appendFixedDecimal(secondOfMinute(),2)
.appendOptional(msParser);// 是的,有:

// Milliseconds parser
final DateTimeParser msParser = new DateTimeFormatterBuilder()
    .appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
    .toParser();

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

builder = builder.appendFixedDecimal(year(), 4)
    .appendFixedDecimal(monthOfYear(), 2)
    .appendFixedDecimal(dayOfMonth(), 2)
    .appendLiteral('-')
    .appendFixedDecimal(hourOfDay(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(minuteOfHour(), 2)
    .appendLiteral(':')
    .appendFixedDecimal(secondOfMinute(), 2)
    .appendOptional(msParser); // <-- HERE: optional milliseconds
// builder.build().withTimeZone(DateTimeZone.UTC) will return the formatter
//毫秒分析器
final DateTimeParser msParser=新的DateTimeFormatterBuilder()
.appendLiteral('.').appendDecimal(毫秒(),1,3)
.toParser();
DateTimeFormatterBuilder=新的DateTimeFormatterBuilder();
builder=builder.appendFixedDecimal(年份(),4)
.appendFixedDecimal(monthOfYear(),2)
.appendFixedDecimal(dayOfMonth(),2)
.appendLiteral('-')
.appendFixedDecimal(hourOfDay(),2)
.appendLiteral(“:”)
.appendFixedDecimal(分钟数(),2)
.appendLiteral(“:”)
.appendFixedDecimal(secondOfMinute(),2)

.appendOptional(msParser);//此格式化程序不会在joda time>=2.2时打印。有没有办法得到完全相同的行为,但允许打印(丢弃米利)?@juell我将不得不调查;我不确定我使用的是Joda Time的哪个版本。我刚刚将此作为一个单独的问题发布:,请在那里回答,如果你弄明白了:)此格式化程序将不会在Joda Time>=2.2中打印。有没有办法得到完全相同的行为,但允许打印(丢弃米利)?@juell我将不得不调查;我不确定我使用的是Joda Time的哪个版本。我刚刚将此作为一个单独的问题发布:,请在那里回答,如果你弄明白了:)此格式化程序将不会在Joda Time>=2.2中打印。有没有办法得到完全相同的行为,但允许打印(丢弃米利)?@juell我将不得不调查;我不确定我使用的是Joda Time的哪个版本。我刚刚将此作为一个单独的问题发布:,请在那里回答,如果你弄明白了:)此格式化程序将不会在Joda Time>=2.2中打印。有没有办法得到完全相同的行为,但允许打印(丢弃米利)?@juell我将不得不调查;我不确定我用的是哪一个版本的Joda Time我刚才把这个问题作为一个单独的问题发了出来:,如果你想清楚了,请回答:)