我对使用datetimeformatter包还很陌生,使用simpledateformat也能得到同样的结果。
Date date = new SimpleDateFormat("MMMM").parse(month);//"DECEMBER"
Date date = new SimpleDateFormat("yyyy").parse(year);//"2020"
如何使用datetimeformatter实现这一点?
我对使用datetimeformatter包还很陌生,使用simpledateformat也能得到同样的结果。
Date date = new SimpleDateFormat("MMMM").parse(month);//"DECEMBER"
Date date = new SimpleDateFormat("yyyy").parse(year);//"2020"
如何使用datetimeformatter实现这一点?
4条答案
按热度按时间daolsyd01#
检查此链接https://www.baeldung.com/java-datetimeformatter. 您可以使用自定义格式作为
irtuqstp2#
api的日期时间
java.util
以及它们的格式化api,SimpleDateFormat
过时且容易出错。让我们看看他们的行动:输出:
我不需要解释他们的违约情况。它们不应该采用这种意外的默认值,而是应该发出一个警报(抛出一些异常),这将有助于程序员做出React。
由于这些意外情况,建议您完全停止使用它们,转而使用现代的日期时间api。
注意:无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。
使用现代日期时间api:
输出:
因此,现在您(程序员)知道您必须做一些事情(例如,使用您自己的默认值)来解析字符串。
演示:
输出:
如果您不想创建日期或日期时间对象,而是只想将字符串解析为
Month
以及Year
,您可以简单地通过以下方式完成:输出:
在trail:date-time了解有关现代日期时间api的更多信息。
zz2j4svz3#
DateTimeFormatter
不支持util.Date
同学们,这是你们需要用到的LocalDate
班级。你不能只用month
或者year
,应传递3个值month
,day
以及year
去约会。wgmfuz8q4#
输出:
十二月
这一年比较简单。我们不需要格式化程序。
2020
老年人
Date
类,尽管它的名字从不代表日期。这是一个时间点。然而,我们通常用它来表示日期、时间、月份、年份以及更多的用途,有时也用于表示时间点。一个非常令人困惑的结果是Date
从你的问题代码中获得的对象在极少数情况下会错误地打印为11月而不是12月,打印为2019年而不是2020年。你不应该再使用Date
班级。它的设计总是很差,而且早已过时。另一方面,java.time是现代的java日期和时间api
DateTimeFormatter
属于,为每个此类概念定义一个类:LocalDate
为了约会,Month
一年中的一个月,Year
一年等等,它让我们的代码更清楚地知道我们在处理什么,这是好的。它还要求我们了解不同的课程,并考虑每次使用哪一个。如果您的月份字符串都是大写的,我们需要告诉格式化程序进行解析,而不考虑大小写:
当你的月名是英语时,记得指定一个说英语的地区。