【发布时间】:2021-01-15 07:15:51
【问题描述】:
我正在尝试创建一个将 DAY、MONTH、YEAR 转换为 Java 中的 Date 对象的方法
我有
String DAY = "31"
String YEAR = "2012"
String MONTH = "11"
我需要一个可配置的格式作为输出。
String format = "MM/dd/yyy";
我总是只会得到从“01”到“31”的DAY字符串
我将始终只获得从“1000”到“9999”的 YEAR 字符串
我总是只会得到从“01”到“12”的MONTH字符串(永远不会得到一月、二月等)
我知道 SimpleDateFormat(format) 可以在一定程度上发挥作用。
new SimpleDateFormat("MM/dd/yyyy") 会将“02/01/2010”解析为 2010 年 2 月 1 日,但是
new SimpleDateFormat("mm/dd/yyyy") 将“02/01/2010”解析为 Jan 01 2010
是否可以在 java 中编写一个通用方法,根据可配置的模式将给定的字符串(DAY、MONTH、YEAR)转换为 Date 对象?哪个可以抛出异常是我提供了错误的 DAY、MONTH、YEAR 组合(如 DAY = "31"、MONTH = "02"、YEAR = "2010")
类似:
Date dateParser(String format){
String DAY = "01";
String YEAR = "1922";
String MONTH = "02";
return date;
}
【问题讨论】:
-
SimpleDateFormat将满足您的需求。mm/dd/yyyy不起作用,因为小写的mm是几分钟而不是几个月。 -
@GriffeyDog - 请不要建议任何人使用过时的 API。您会发现数百个关于人们使用
java.util日期时间 API 和SimpleDateFormat获得的不良结果的问题。 -
我建议您既不要使用
Date,也不要使用SimpleDateFormat。这些类设计不佳且过时,尤其是后者出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。 -
仅供参考:不要再使用
Date。它已经过时,有几个问题,不再推荐使用。请改用LocalDateTimeAPI(其中还包括ZonedDateTime、LocalDate和LocalTime)。 -
@ArvindKumarAvinash 我并不是建议 OP 应该使用过时的 Date API,只是回答所提出的问题,即 OP 似乎正在使用该 API。
标签: java date java-8 datetime-format simpledateformat