前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用“dd MM”解析日期

如何使用“dd MM”解析日期

作者头像
FunTester
发布2020-04-03 16:07:01
1.1K0
发布2020-04-03 16:07:01
举报
文章被收录于专栏:FunTesterFunTester

错误示范

本示例说明如何在不指定年份的情况下解析日期,如下:

代码语言:javascript
复制

package com.fun

import com.fun.frame.SourceCode

import java.time.LocalDate
import java.time.format.DateTimeFormatter

class TSSS extends SourceCode {

    public static void main(String[] args) {
        public static void main(String[] args) {

            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM", Locale.CHINA);

            String date = "02 12";

            LocalDate localDate = LocalDate.parse(date, formatter);

            System.out.println(localDate);

            System.out.println(formatter.format(localDate));

        }

    }
}

输出

代码语言:javascript
复制
INFO-> 当前用户:fv,IP:192.168.0.100,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.3
Exception in thread "main" java.time.format.DateTimeParseException: Text '02 12' could not be parsed at index 3
	at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
	at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
	at java.time.LocalDate.parse(LocalDate.java:400)
	at java_time_LocalDate$parse.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135)
	at com.fun.TSSS.main(TSSS.groovy:16)

Process finished with exit code 1

正解

模式dd MMM还不够;我们需要DateTimeFormatterBuilder为日期解析提供默认年份。

代码语言:javascript
复制

package com.fun

import com.fun.frame.SourceCode

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatterBuilder
import java.time.temporal.ChronoField

class TSSS extends SourceCode {

    public static void main(String[] args) {

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendPattern("dd MM")
                .parseDefaulting(ChronoField.YEAR, 2020)
                .toFormatter(Locale.CHINA);

        String date = "02 11";

        LocalDate localDate = LocalDate.parse(date, formatter);

        System.out.println(localDate);

        System.out.println(formatter.format(localDate));

    }
}

输出

代码语言:javascript
复制
INFO-> 当前用户:fv,IP:192.168.0.100,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.3
2020-11-02
02 11

Process finished with exit code 0

  • 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误示范
  • 输出
  • 正解
  • 输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档