【发布时间】:2017-07-19 14:13:34
【问题描述】:
00/00/00 是 Java 中 MM/dd/yy 格式的有效日期吗?
我在下面的示例代码中尝试了这个,以查看 00/00/00 在 Java 中是否有效。但是,被解析的日期是SUN Nov 30 00:00:00 IST 2。
public static void main(String[] args) {
System.out.println(new SimpleDateFormat("MM/dd/yy").parse("00/00/00"));
}
如果不是,我如何在 Java 中解析 "00/00/00" 格式的日期字符串 MM/dd/yy?
问题是我需要读取字符串00/00/00,它是在文本文件中获得的。在此过程中,当我使用 SimpleDateFormat 的 parse() 方法解析该字符串时,我得到了 SUN Nov 30 00:00:00 IST 2 作为输出。但是,我期待第 0 年、第 0 天、第 0 个月作为输出。你认为这可能吗?
感谢您的宝贵时间。
【问题讨论】:
-
为什么需要将
00/00/00解析为Date?什么是零月和零天?我没有看到这里的重点...... -
试试
simpleDateFormat.setLenient(false);。默认情况下,SimpleDateFormat会尽力提供帮助。有时它太很有帮助,并且可以愉快地解析这样的乱码日期 -
这听起来像XY problem。
00/00/00不是真正的有效日期。你为什么要解析它?为什么不直接检测它等于00/00/00作为字符串然后使用预定值或行为呢?请解释问题的背景。 -
不,这不是一个有效的日期。一个月没有第 0 年,没有第 0 个月,也没有第 0 天。
SimpleDateFormat在宽松模式下(参见@MrSpoon 的评论)足够宽松,无论如何都可以解析它。 -
正如上面的 cmets 已经说过的,这是不可能的。您可以做的最好的事情是检查
String是否为00/00/00并单独处理 - 或尝试使用setLenient(false)选项解析并捕获异常。
标签: java datetime datetime-parsing