从使用toLocaleString()通过javascript返回的日期中删除"EDT"的最佳方法

Mic*_*ele 1 javascript formatting date edt

我是javascript的新手,所以这可能是一个非常简单的问题.在使用toLocaleString返回的日期之后,是否有一种简单的方法可以阻止'EDT'打印?谢谢!

nam*_*uol 5

没有办法确定会有什么toLocaleString回报; 你肯定不能保证EDT会出现在运行它的每台机器上,更不用说任何时区的指示了.

来自Mozilla的开发者网络:

toLocaleString方法依赖于格式化日期的底层操作系统.它使用运行脚本的操作系统的格式约定将日期转换为字符串.例如,在美国,月份出现在日期(04/15/98)之前,而在德国,日期出现在月份之前(15.04.98).如果操作系统不符合2000年标准,并且在1900年之前或2000年之前未使用全年,则toLocaleString将返回不符合2000年的字符串.转换操作系统未正确格式化的年份时,toLocaleString的行为与toString类似.

一种可能的解决方法是使用toLocaleDateString和构造自定义日期字符串toLocaleTimeString.

// Something to this effect:
var d = new Date();
console.log(d.toLocaleDateString() + " " + d.toLocaleTimeString());
Run Code Online (Sandbox Code Playgroud)

这通常不包括其输出中的时区,但即使这并不完美,因为您无法知道输出的确切格式是什么.

因此,最好的解决方案是使用自定义日期格式化功能:

// Add leading-zeros to numbers less than 10[000...]
function padZ(num, n) {
    n = n || 1; // Default assume 10^1
    return num < Math.pow(10, n) ? "0" + num : num;
}

function formattedDate(d) {
    var day = d.getDate();
    var month = d.getMonth() + 1; // Note the `+ 1` -- months start at zero.
    var year = d.getFullYear();
    var hour = d.getHours();
    var min = d.getMinutes();
    var sec = d.getSeconds();
    return month+"/"+day+"/"+year+" "+hour+":"+padZ(min)+":"+padZ(sec);
}
Run Code Online (Sandbox Code Playgroud)

要深入了解可用的Date方法,请查看DateMDN.