当前位置: 首页 > 知识库问答 >
问题:

从SimpleDateFormat迁移到DateTimeFormater:额外输入

边健
2023-03-14
    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"));

我想用某种通配符来表示“现在你可以自由地忽略额外的输入”...

以前的基于SimpleDateFormat的版本很好地处理了这一点...

这里有一个指向拉请求的链接:https://github.com/apache/james-mime4j/pull/44

共有1个答案

苏浩瀚
2023-03-14

DateTimeFormatter#parse(CharSequence,ParsePosition)可供您使用。

演示:

import java.text.ParsePosition;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String s = "08/01/2021&&";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM/dd/uuuu", Locale.ENGLISH);
        LocalDate date = LocalDate.from(dtf.parse(s, new ParsePosition(0)));
        System.out.println(date);
    }
}

输出:

2021-08-01
 类似资料:
  • MongoDB从3.2转储,用3.4还原,错误索引保存=null 在我的情况下,手工重新创建索引不是一个选项,我需要一个脚本来自动创建索引,以便以后迁移我的生产环境。 到目前为止我所尝试的: 正确的进行方式是什么?

  • 问题内容: 我们的Oracle数据库遇到了严重的性能问题,我们想尝试将其迁移到基于MySQL的数据库(直接使用MySQL,或者最好是Infobright)。 问题是,在我们实际上不知道新数据库的所有功能是否符合我们的需求之前,我们需要让旧系统和新系统至少重叠数周(如果不是几个月)。 因此,这是我们的情况: Oracle数据库由多个表组成,每百万行。白天,实际上有成千上万的语句,我们无法停止迁移。

  • 问题内容: 在我的应用程序中,我从UIWebView迁移到WKWebView,如何为WKWebView重写这些功能? 和 问题答案: UIWebView => WKWebView等效 关于您可以写: 对于:

  • 考虑: 为什么,我怎么才能让它起作用? 我的CPU是i5-10210u(支持AVX-256)。在X64版本/调试中运行。

  • TypeScript不是凭空存在的。 它从JavaScript生态系统和大量现存的JavaScript而来。 将JavaScript代码转换成TypeScript虽乏味却不是难事。 接下来这篇教程将教你怎么做。 在开始转换TypeScript之前,我们假设你已经理解了足够多本手册里的内容。 如果你打算要转换一个React工程,推荐你先阅读React转换指南。 如果你在写纯JavaScript,你大

  • 我正在将我的应用程序从Log4J1.2迁移到Log4J2-2.8.1版本。下面是log4j.properties文件中现有的1.x配置。