gpt4 book ai didi

java - 为什么字符串 '35/35/1985` 解析为 `Sat Dec 05 00:00:00 IST 1987` 日期对象?

转载 作者:行者123 更新时间:2023-12-03 02:44:49 25 4
gpt4 key购买 nike

public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String dateStr = "35/35/1985";
Date date = sdf.parse(dateStr);

我期待运行时异常,例如日期解析异常,但返回的日期对象是 Sat Dec 05 00:00:00 IST 1987

按什么逻辑字符串35/35/1985解析至今Sat Dec 05 00:00:00 IST 1987

更新:- 如果我设置 setLenient(false) ,它会抛出异常。但如果我让它成真按什么逻辑串35/35/1985解析至今Sat Dec 05 00:00:00 IST 1987

最佳答案

public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String dateStr = "35/35/1985";
Date date = sdf.parse(dateStr);

回答你的“背后的逻辑”问题:嗯,它将被解析为

xx.xx.1985
-> set / add 35 Months (xx.35.1982 -> xx.11.1987)
-> set / add 35 Days (35.11.1987 -> 05.12.1987)

如果您不希望出现此行为,请将 lenient 设置为 false: http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setLenient%28boolean%29

关于java - 为什么字符串 '35/35/1985` 解析为 `Sat Dec 05 00:00:00 IST 1987` 日期对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com