Joda-Time 中的自由日期/时间解析

发布于 2025-01-06 17:25:33 字数 205 浏览 2 评论 0原文

是否可以创建一个 DateTimeParser 来解析:

  • 带有时间的日期 给定
  • 没有时间的日期(假设时间是一天的开始)
  • 没有日期的时间(假设日期是今天)

或者我需要吗有三个独立的解析器,并尝试用每个解析器解析字符串?

换句话说,是否可以在解析器中定义可选字段?

Is it possible to create a single DateTimeParser which would parse:

  • dates with time given
  • dates without time (assuming time to be start of day)
  • times without dates (assuming date to be today)

or do I need to have three separate parsers, and try parsing strings with each one?

In other words, is it possible to define optional fields in a parser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你对谁都笑 2025-01-13 17:25:33

org.joda.time.format.ISODateTimeFormat 有一个静态方法 dateOptionalTimeParser(),它基于 DateTimeFomatterBuilder 类使用下面的代码,该方法有一个 appendOptional 方法 - 您可能能够根据您的要求调整该方法...链接:http://joda-time.sourceforge.net/apidocs/org /joda/time/format/DateTimeFormatterBuilder.html

public static DateTimeFormatter dateOptionalTimeParser() {
    if (dotp == null) {
        DateTimeParser timeOrOffset = new DateTimeFormatterBuilder()
            .appendLiteral('T')
            .appendOptional(timeElementParser().getParser())
            .appendOptional(offsetElement().getParser())
            .toParser();
        dotp = new DateTimeFormatterBuilder()
            .append(dateElementParser())
            .appendOptional(timeOrOffset)
            .toFormatter();
    }
    return dotp;
}

org.joda.time.format.ISODateTimeFormat has a static method dateOptionalTimeParser() that uses the code below, based on the DateTimeFomatterBuilder class, which has an appendOptional method - you would probably be able to adapt the method to your requirement... Link: http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormatterBuilder.html

public static DateTimeFormatter dateOptionalTimeParser() {
    if (dotp == null) {
        DateTimeParser timeOrOffset = new DateTimeFormatterBuilder()
            .appendLiteral('T')
            .appendOptional(timeElementParser().getParser())
            .appendOptional(offsetElement().getParser())
            .toParser();
        dotp = new DateTimeFormatterBuilder()
            .append(dateElementParser())
            .appendOptional(timeOrOffset)
            .toFormatter();
    }
    return dotp;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文