2016-09-30 81 views
1

如何檢查一個月的30天或31天是否存在。檢查日期是否存在(第30天/第31天)

31.09.2016不存在,但將在Java和Javascript中顯示爲01.10.2016。即使使用正確的語言環境等,任何JavaScript或Java解決方案都是受歡迎的,因爲ajax請求也可以解決此問題。

在此先感謝

+1

將字符串更改爲日期,並返回字符串。如果字符串相同,則是有效日期;否則,它不是。 –

+0

我認爲可以有一個更簡單的解決方案。這也是我的第一個想法。非常感謝你。 – Moonstar

+0

@AndyTurner那麼日期12/31/2016不存在嗎?因爲它不會在州內。當然,這是明顯的,所以它可能被正確檢測 - 與05/06/2016一起試用。 – vlaz

回答

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控制檯

+0

完美。按原樣工作。非常感謝你。驗證是通過inputmask完成的,但無法檢查這個特殊情況。 – Moonstar

3

@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); 
+0

不知道這個。謝謝。 – Moonstar

+0

:)不客氣!!!! –

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"); 
} 
+1

不要抓住'Exception':捕獲最可能發生的異常(即'ParseException'),這樣就不會混淆不相關的問題。 –

+0

@AndyTurner同意你的意見。我忘了這個例外,感謝提醒我:) –

0

,如果你是一個有效的日期和工作的檢查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 
0

java.time

YearMonth類對此很方便。該對象可以提供表示月份的最後一天的LocalDate對象。您可以向該對象查詢其日期編號。

int numberOfLastDay = 
    YearMonth.of(2016 , Month.SEPTEMBER) 
     .atEndOfMonth() 
     .getDayOfMonth() ; 
相關問題