检查日期是否存在(第30天/第31天)

时间:2016-09-30 12:29:04

标签: javascript java grails

如何检查一个月的30或31天是否存在。

31.09.2016不存在,但将在Java和Javascript中显示为01.10.2016。即使使用正确的语言环境等,javascript或java中的任何解决方案都是受欢迎的,因为ajax请求也可以解决这个问题。

提前致谢

5 个答案:

答案 0 :(得分:5)

我认为你应该在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控制台

答案 1 :(得分:3)

来自@nagyf的答案非常适合js,在java方面你应该在DateFormat中将 leninent 属性设置为false然后你会得到一个<如果日期无效,则为strong> 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);

答案 2 :(得分:1)

这是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");
}

答案 3 :(得分:0)

检查lastDay给出的替代方法与实际在日历上的内容将是如果您正在使用有效日期和给定的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

答案 4 :(得分:0)

java.time

YearMonth类对此非常方便。此对象可以提供表示该月最后一天的LocalDate对象。您可以询问该对象的日期编号。

int numberOfLastDay =
    YearMonth.of( 2016 , Month.SEPTEMBER )
        .atEndOfMonth()
        .getDayOfMonth() ;