繁体   English   中英

JavaScript 将长日期格式转换为 mm/dd/yyy

[英]JavaScript convert long date format to mm/dd/yyy

我有以下代码将 JavaScript 中的长日期格式转换为 mm/dd/yyyy。 当控制台日志中的 newValu 为“Date 2016-12-29T00:00:00.000Z”时,date_str 返回一天,变为“12/28/2016”。 不确定是什么导致了问题。 如果我们将 d(日)增加 1,那将不起作用,因为如果 d = 31,我们可能需要增加月份。

                        console.log(newValue);
                        var date = newValue;
                        var d = date.getDate();
                        var m = date.getMonth() + 1;
                        var y = date.getFullYear();
                        date_str =  (m<=9 ? '0' + m : m) + '/' + (d <= 9 ? '0' + d : d) + "/" + y;

这里有一个提示:

    function change(date) {
        var r = String(date).match(/^\s*([0-9]+)\s*-\s*([0-9]+)\s*-\s*([0-9]+)(.*)$/);
        return r[2] + "-" + r[3] + "-" + r[1] + r[4];
    }

此函数将返回“mm/dd/yyyy”。

不确定是什么导致了问题。

如果newValue是一个 Date 对象并且当打印到控制台时你会得到“2016-12-29T00:00:00.000Z”,请注意这是GMT

如果主机系统的时区位于格林威治标准时间以西(比如 -0400),则等效日期将为“2016-12-28T20:00:00.000Z”,即提前 4 小时(以及前一天)。 当您使用普通的get方法( getDategetHoursgetMinutes等)时,您将获得这些值。

所以你的日期字符串对于主机系统的时区是正确的。

 var x = new Date('2016-12-29T00:00:00.000Z'); // Local equivalent on your host system document.write(x); // UTC values in ISO 8601 format document.write('<br>' + x.toISOString()); // Date string from ISO parts document.write('<br>'+ ('0'+(x.getUTCMonth()+1)).slice(-2) + '-' + ('0'+x.getUTCDate()).slice(-2) + '-' + x.getUTCFullYear() );

如果您希望日期字符串中的值与 Date 对象的 UTC 值匹配,请使用 UTC 方法:

var d = date.getUTCDate();
var m = date.getUTCMonth() + 1;
var y = date.getUTCFullYear();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM