【问题标题】:Need to Format String Date in different format in java [closed]需要在java中以不同格式格式化字符串日期[关闭]
【发布时间】:2019-08-30 07:59:38
【问题描述】:

我有一个字符串日期“2019 年 8 月 30 日”。我想格式化为“2019-08-30”。 我正在尝试使用以下代码。它不工作。

字符串输入 =“2019 年 8 月 30 日”; 日期日期 = sdf.parse(input);

       // Date to String:
      String strDate = sdf.format(date);
      System.out.println(strDate);

我收到一个错误 线程“main”java.text.ParseException 中的异常:无法解析的日期:“2019 年 8 月 30 日”

请帮助我,如何进行?

【问题讨论】:

标签: java string date parseexception dateformatter


【解决方案1】:

tl;博士

您正在使用糟糕的日期时间类,这些类在几年前因采用 JSR 310 而过时。请改用java.time.LocalDate

并且您忽略了指定格式模式以匹配您的输入字符串。我们在这里使用DateTimeFormatter 类这样做。

LocalDate
.parse(
    "30 Aug 2019" ,
    DateTimeFormatter.ofPattern( "d MMM uuuu" ).withLocale( Locale.US )
)
.toString()

2019-08-30

java.time

LocalDate 类表示仅日期值,没有时间,也没有 time zoneoffset-from-UTC

在您的 DateTimeFormatter 上指定 Locale 以确定翻译月份名称等所需的人类语言和文化规范。

String input = "30 Aug 2019" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "d MMM uuuu" ).withLocale( Locale.US ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

看到这个code run live at IdeOne.com

ld.toString(): 2019-08-30


关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。

从哪里获得 java.time 类?

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

【讨论】:

    【解决方案2】:

    虽然您应该使用 java.time 类,但要回答您的问题,您需要 2 个 SimpleDateFormats;一个用于解析,一个用于格式化:

    SimpleDateFormat sdfIn = new SimpleDateFormat("dd MMM yyyy");
    SimpleDateFormat sdfOut = new SimpleDateFormat("yyyy-MM-dd");
    
    Date date = sdfIn.parse("30 Aug 2019");
    String strDate = sdfOut.format(date);
    
    System.out.println(strDate); // 2019-08-30
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2016-04-23
      相关资源
      最近更新 更多