首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SimpleDateFormat迁移到DateTimeFormater:额外的输入

从SimpleDateFormat迁移到DateTimeFormater:额外的输入
EN

Stack Overflow用户
提问于 2021-06-17 09:13:46
回答 1查看 52关注 0票数 1

我正在将一些旧代码从SimpleDateFormat迁移到DateTimeFormatter。(Apache MIME4J库,这将释放显着的性能提高!)

在电子邮件领域工作,我需要遵守RFC-5322,并提出了以下格式化程序:

代码语言:javascript
复制
    public static final DateTimeFormatter RFC_5322 = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .parseLenient()
        .optionalStart()
            .appendText(DAY_OF_WEEK, dayOfWeek())
            .appendLiteral(", ")
        .optionalEnd()
        .appendValue(DAY_OF_MONTH, 1, 2, SignStyle.NOT_NEGATIVE)
        .appendLiteral(' ')
        .appendText(MONTH_OF_YEAR, monthOfYear())
        .appendLiteral(' ')
        .appendValueReduced(YEAR, 2, 4, INITIAL_YEAR)
        .appendLiteral(' ')
        .appendValue(HOUR_OF_DAY, 2)
        .appendLiteral(':')
        .appendValue(MINUTE_OF_HOUR, 2)
        .optionalStart()
            .appendLiteral(':')
            .appendValue(SECOND_OF_MINUTE, 2)
        .optionalEnd()
        .optionalStart()
            .appendLiteral('.')
            .appendValue(MILLI_OF_SECOND, 3)
        .optionalEnd()
        .optionalStart()
            .appendLiteral(' ')
            .appendOffset("+HHMM", "GMT")
        .optionalEnd()
        .optionalStart()
            .appendLiteral(' ')
            .appendOffsetId()
        .optionalEnd()
        .optionalStart()
            .appendLiteral(' ')
            .appendPattern("0000")
        .optionalEnd()
        .optionalStart()
            .appendLiteral(' ')
            .appendPattern("(zzz)")
        .optionalEnd()
        .toFormatter()
        .withZone(ZoneId.of("GMT"));

它可以很好地处理输入,比如Thu, 4 Oct 2001 20:12:26 -0700 (PDT)

然而,一些边缘电子邮件在“Date: Thu, 4 Oct 2001 20:12:26 -0700 (PDT),Thu, 4 Oct 2001 20:12:26 -0700”之后添加了额外的字符,使解析失败.

我想用通配符说“现在你可以忽略额外的输入了”.

以前基于SimpleDateFormat的版本处理得很好.

下面是拉请求的链接:https://github.com/apache/james-mime4j/pull/44

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-06-17 09:26:13

RFC_5322.parse(body,new ParsePosition(0))解决了这个问题.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68016367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档