Javascript 日期函数返回错误的星期几

标签 javascript date conditional-statements

我的 Javascript 函数有效,但报告了错误的星期几。有些日子它有效,但有些日子无效。例如,1991 年 1 月 22 日正确报告为星期二,但 1994 年 4 月 4 日报告错误。这是如何固定的?

另外,我如何实现返回“你来自 future ?!”的条件。如果用户提供了 future 的日期。

到目前为止,这是我的功能。

    //ask user for birthday
var birthday = window.prompt("What is your birthday? (MM-DD-YYYY)", "");
var birthdayArray = birthday.split('-');
//validate entry is correct
if(birthdayArray.length !==3){
    alert("invalid date")
}
//validate if date format is correct
else{
     if(!birthdayArray[0].match(/^\d\d$/) ||
       !birthdayArray[1].match(/^\d\d$/) ||
       !birthdayArray[2].match(/^\d\d\d\d$/)){
        alert("invalid date");
     }
///take user input and find weekday
     else{var weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday','Friday', 'Saturday'];
    var userDate = new Date(
        parseInt(birthdayArray[0])-1,
        parseInt(birthdayArray[1])-2,
        parseInt(birthdayArray[2])
    );
    var result = userDate.getDay();
    var dayName = weekDays[result];
    document.write("You were born on "+dayName);
}
}

无需完全重做我的代码就可以做到这一点吗?

编辑:-1 和 -2 是我在玩弄日期修复,希望我能找到一个黄金组合,但到目前为止什么都没有。

最佳答案

因为它是倒退的。日期构造函数看起来像-

new Date(year, month, day);

你在做-

new Date(month, day, year);

所以它应该是——

var userDate = new Date(
        parseInt(birthdayArray[2]),
        parseInt(birthdayArray[0])-1, // dates in javascript start counting at 0
        parseInt(birthdayArray[1])
    );

关于Javascript 日期函数返回错误的星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108598/

相关文章:

java - 如何使用 Java/Hibernate 在 SQL 中自动插入当前日期

mysql - 将 MM-DD-YYYY varchar 转换为日期时间

c++ - boost 条件。我究竟做错了什么?

尽管 ruby​​ 条件语句执行 Javascript

javascript - 服务器端资源文件加载

javascript - 在 Jest 测试中将通用数据放在哪里

javascript - 将新小部件推送到 DOJO 连接点而不是替换

php - 从 PHP 中的字符串中识别日期格式

performance - 当前 CPU 的成本更高 : arithmetic operations or conditionals?

javascript - 离开网站或关闭浏览器时触发的事件