如何檢查一個月的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