如何检查一个月的30天或31天是否存在。检查日期是否存在(第30天/第31天)
31.09.2016不存在,但将在Java和Javascript中显示为01.10.2016。即使使用正确的语言环境等,任何JavaScript或Java解决方案都是受欢迎的,因为ajax请求也可以解决此问题。
在此先感谢
如何检查一个月的30天或31天是否存在。检查日期是否存在(第30天/第31天)
31.09.2016不存在,但将在Java和Javascript中显示为01.10.2016。即使使用正确的语言环境等,任何JavaScript或Java解决方案都是受欢迎的,因为ajax请求也可以解决此问题。
在此先感谢
我认为你应该在JavaScript中使用momentjs库以任何一种方式操控:MomentJS
var date = moment('31.09.2016','DD.MM.YYYY');
console.log(date.isValid()); // This will print false in case of an invalid date
编辑:创建一个plunker所以你可以尝试一下: plunker example 。检查JavaScript控制台
完美。按原样工作。非常感谢你。验证是通过inputmask完成的,但无法检查这个特殊情况。 – Moonstar
从@nagyf答案是JS还不错,在Java端,你应该设置leninent属性设置为false在DateFormat
,然后如果日期是无效的,你会得到一个ParseException的。
final String d = "31/09/2016";
final DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
final Date parsDate = df.parse(d);
System.out.println(d);
不知道这个。谢谢。 – Moonstar
:)不客气!!!! –
这里是Java
解决try{
String date = "31/9/2016";
Data d = new Date();
DateFormat df = new SimpleDateFormat("đd/MM/yyyy");
df.setLenient(false);
d = df.parse(date);
catch(ParseException ex){
System.out.println("Invalid Date");
}
不要抓住'Exception':捕获最可能发生的异常(即'ParseException'),这样就不会混淆不相关的问题。 –
@AndyTurner同意你的意见。我忘了这个例外,感谢提醒我:) –
,如果你是一个有效的日期和工作的检查LASTDAY给出VS究竟是日历上的另一种方式是给出lastDay:(不是在groovy/java中的javascript)
int day=31
Date givenDate = new Date()
Calendar cal = Calendar.instance
cal.setTime(givenDate)
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH)
if (day > lastDay) {
// fail throw exception
}
//otherwise good to go
YearMonth
类对此很方便。该对象可以提供表示月份的最后一天的LocalDate
对象。您可以向该对象查询其日期编号。
int numberOfLastDay =
YearMonth.of(2016 , Month.SEPTEMBER)
.atEndOfMonth()
.getDayOfMonth() ;
将字符串更改为日期,并返回字符串。如果字符串相同,则是有效日期;否则,它不是。 –
我认为可以有一个更简单的解决方案。这也是我的第一个想法。非常感谢你。 – Moonstar
@AndyTurner那么日期12/31/2016不存在吗?因为它不会在州内。当然,这是明显的,所以它可能被正确检测 - 与05/06/2016一起试用。 – vlaz