我面临一个问题。我需要使用Javascript将给定日期与今天日期进行比较。我在下面解释我的代码。
function getCurrentDate(){
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd<10)
{
dd='0'+dd;
}
if(mm<10)
{
mm='0'+mm;
}
today = dd+'-'+mm+'-'+yyyy;
return today;
}
var givendate=new Date('19-01-2018');
var todaydate=$scope.getCurrentDate();
if (givendate >= todaydate) {
console.log('bool',true);
}else{
console.log('bool',false);
}
这里我应该得到结果true
但是在这里我得到的控制台消息为false
。请帮我解决这个问题。
答案 0 :(得分:1)
正如您在评论givendate
"Invalid Date"
中所说的那样 - 这就是您错误的原因。
因此,在解析日期之前,请检查how to detect invalid date
new Date
尝试解析ISO 8601 format。引用:
格式如下。确切地说,此处显示的组件必须存在, 正是这个标点符号。注意&#34; T&#34;出现 字面意思是在字符串中,表示时间的开始 元素,如ISO 8601中所述。
Year: YYYY (eg 1997) Year and month: YYYY-MM (eg 1997-07) Complete date: YYYY-MM-DD (eg 1997-07-16) Complete date plus hours and minutes: YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00) Complete date plus hours, minutes and seconds: YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00) Complete date plus hours, minutes, seconds and a decimal fraction of a second YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00) where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)
确保在构造日期对象时传递格式正确的日期。有关该主题的所有详细信息均可在JS MDN的Date.parse
topic
答案 1 :(得分:1)
以下代码有效。与其他人说的一样,您需要确保以Date构造函数的预期正确格式指定日期。
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="today"></p>
<p id="text"></p>
<script>
today = new Date();
jan19 = new Date('2018-01-19')
document.getElementById("demo").innerHTML = jan19;
document.getElementById("today").innerHTML = today;
if (today < jan19) {
document.getElementById("text").innerHTML = 'true';
}
else {
document.getElementById("text").innerHTML = 'false';
}
</script>
</body>
</html>
答案 2 :(得分:1)
如果您想继续使用当前日期格式( dd-MM-yyyy
),则可能需要将字符串拆分为-
并相应重新排列以生成有效日期
JS代码
function getCurrentDate() {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
if (dd < 10)
dd = '0' + dd;
if (mm < 10)
mm = '0' + mm;
today = dd + '-' + mm + '-' + yyyy;
return today;
}
var todayDate = getCurrentDate().toString();
var givenDate = '19-01-2018';
var todayDateArray = todayDate.split('-');
var givenDateArray = givenDate.split('-');
todayDate = new Date(todayDateArray[2] + '-'
+ todayDateArray[1] + '-'
+ todayDateArray[0]);
givenDate = new Date(givenDateArray[2] + '-'
+ givenDateArray[1] + '-'
+ givenDateArray[0]);
if(givenDate >= todayDate)
console.log('bool', true);
else
console.log('bool', false);
&#13;
答案 3 :(得分:0)
这对我有用。如果您不想要自定义格式化日期,则可以使用此日期。
function getCurrentDate(){
var today = new Date();
return today;
}
var givendate=new Date("2018-01-19");
var todaydate= getCurrentDate();
console.log(givendate);
console.log(todaydate);
if (givendate >= todaydate) {
console.log('bool',true);
}else{
console.log('bool',false);
}
&#13;