Javascript 日期是休息日吗? [复制]

2024-04-03

我试图在我的应用程序中使用一个简单的日期函数来传递以下格式的日期yyyy-mm-dd例如2017-07-30并以以下格式返回07/30/2017.

但是,当我尝试此操作时,我正确提供了日期,但它输出的日期比我要查找的日期短一天。

function format(inputDate) {
    var date = new Date(inputDate);
    if (!isNaN(date.getTime())) {
        var day = date.getDate().toString();
        var month = (date.getMonth() + 1).toString();
        // Months use 0 index.

        return (month[1] ? month : '0' + month[0]) + '/' +
           (day[1] ? day : '0' + day[0]) + '/' + 
           date.getFullYear();
    }
}

console.log(format('2017-07-30'));

这是一个小提琴:http://jsfiddle.net/49pptrj4/ http://jsfiddle.net/49pptrj4/

关于为什么返回错误的任何想法?

我的结果:


From here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Differences_in_assumed_time_zone

给定日期字符串“2014 年 3 月 7 日”,[Date.]parse() 假定本地时区,但给定 ISO 格式(例如“2014-03-07”),它将假定 UTC 时区。

假定您的日期字符串为指定日期的 0:00 或午夜in UTC,英国格林威治的时区。然而,您的浏览器会将此时间转换为您当地的时区,如果您位于美洲,则比 UTC 晚几个小时,从而导致结果晚一天。

以下代码应该适用于在本地时区中创建具有正确日期的日期。

utcDate = new Date("2017-07-30"); //Date object a day behind
new Date(utcDate.getTime() + utcDate.getTimezoneOffset() * 60000) //local Date

这里的本地日期是根据时区差异添加时间来创建的。getTimezoneOffset()几分钟后返回,所以* 60000需要转换为毫秒。

这可能不适用于 UTC 之前的地区;可能会提前一天。 编辑:刚刚检查并getTimezoneOffset()在 UTC 之前的区域为负值,因此它将正确减去时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 日期是休息日吗? [复制] 的相关文章

随机推荐