I have
String dateAsString = "15-May-84";
我想将其转换为
Date date = 15/05/1984;
第一次尝试
new SimpleDateFormat("dd/MM/yyyy").format(new Date(dateAsString )), "dd/MM/yyyy")
第二次尝试
LocalDate.parse(dateAsString , DateTimeFormatter.ofPattern("dd/MM/uuuu")));
我尝试了很多方法SimpleDateFormat
and LocalDate
但它总是返回 15/05/0084。
有人可以帮忙吗
首先,用两位数字作为字符串的年份是不好的,为什么呢?
解释
要解析您的日期,很简单,您可以使用:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yy")
.withLocale(Locale.US);
LocalDate ld = LocalDate.parse("15-May-84", formatter);
But
这将返回2084-05-15
,我认为你不是在寻找这个,但你在寻找1984-05-15
.
快速解决
所以要解决这个问题,你可以使用 useminusYears(100)
:
LocalDate ld = LocalDate.parse("15-May-84", formatter).minusYears(100);
But
这对其他年份来说可能是个问题15-May-20
这将返回1920-05-15
.
为此,我根本不建议在您的年份中使用两位数字作为
细绳。
Unless
除非您再次确认您的日期在1900
and 1999
,或之间2000
and 2999
。在这种情况下,您可以创建一个(安全)自定义解析器!
重要的
不要使用旧的日期库,而只使用现代的java.time
API
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)