0

過去のものかどうかをテストするときに日付の検証を見ると、日付コンストラクターはゼロの日付の月を期待していますが、月を表す部分文字列値から 1 を減算するにはどうすればよいですか (位置)

//start of datefield
var dateformat=/^(?:(?:31\/(?:0[13578]|1[02])|(?:29|30)\/(?:0[13-9]|1[012])|(?:0[1-9]|1\d|2[0-8])\/(?:0[1-9]|1[0-2]))\/[2-9]\d{3}|29\/02\/(?:[2-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[3579][26])00))$/;
if (!date.match(dateformat))
{
      errors.push("format incorrect use dd/mm/yyyy make sure you are entering correct days to the month remember 30 days have september, april, june & november, only 28 days in february unless leap year next is 2016");

}
var today = new Date();

var courseYear =date.substr(6,4) // use substr or substring to capture the last four digits
var courseMonth =date.substr(3,2) // use substr or substring to capture the four and fifth digits
var courseDay = date.substr(0,2)//e the first and second digits

var dateToCompare = new Date(courseYear, courseMonth, courseDay);

if (dateToCompare < today) {
  errors.push("this date is in the past"); 

}
4

1 に答える 1

3

では、どうやって1を引くのですか

減算演算子 " -"と数値リテラル " " を使用1。また、前に文字列を数値に変換できるという利点もあります。年と日の場合、単項プラスを使用してその変換を明示的に行うことができます (ただし、Dateコンストラクターは暗黙的に行います)。

new Date(+courseYear, courseMonth-1, +courseDay);
于 2013-06-24T16:09:10.167 に答える