我有一个java代码,以特定的格式输入日期。
static Date parseDate(String userInput){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(userInput);
System.out.println(date);
}catch(ParseException pe){
date=null;
System.out.println("Not a valid date");
}
return date;
}
现在我输入的是无效日期。但它返回的日期是2016年1月14日星期四18:31:30。为什么会这样?如何使其返回null作为日期?
我将试图解释为什么会发生这种情况。
日期是不同的,因为超过字段最大值的值被卷到下一个更大的字段中。
我不确定解决问题的顺序,但一般情况是这样的:
鉴于2015-13-11 89:90:90
这就给我们留下了2016-01-14 18:31:30。
从javadocs的一瞥来看,它似乎使用了一种宽松的
解析模式,在这种模式下,它接受格式不良的输入:
添加此行
format.setLenient(false);
在初始化DateFormat对象之后,它似乎可以修复它。
我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入无效日期时,print语句会给我奇怪的输出。 当是时,它打印
问题内容: SimpleDateFormat: 抛出的异常: 有任何想法吗? 编辑: 感谢您的快速解答。你们都是正确的,我只是错过了SimpleDateFormat文档中的一个关键句子-我可能应该把它称为一天。 问题答案: 从SimpleDateFormat javadocs : 月:如果图案字母的数目为3或更多,则将月份解释为文本;否则,将其解释为数字。 尝试使用“ MMM dd yyyy”之类
我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印
我有一个包含日期的字符串,我需要将hh:mm:ss添加到日期中,但是当我使用dateFormat时,它会给出ParseException。代码如下: 我得到了abv代码的解析异常。但是,如果我从日期格式中删除hh:mm:ss,它工作得很好,输出将是from Date=Wed Sep 25 00:00:00 IST 2013。但我需要像from date=2013-09-25 00:00:00这样的
我正面临一个前所未有的奇怪问题。我有一个以毫秒为单位的日期,希望将其显示为可读的日期。这是我的代码: 如你所见,我只想创建一个显示时间跨度的字符串。当我调试代码时,日期对象包含正确的值,而
对于上面的代码,获取输出,我期望的是。有人能解释为什么会发生这种情况,以及如何使用验证上面的日期吗。感谢你的努力。