从|使用toLocaleString通过javascript返回的日期中删除“ EDT”的最佳方法

问题描述

| 我对javascript比较陌生,因此这可能是一个非常简单的问题。有没有简单的方法可以在使用toLocaleString返回的日期后停止\'EDT \'的打印? 谢谢!     

解决方法

        无法确定ѭ0将返回什么。您当然不能保证
EDT
会在运行它的每台计算机上显示,更不用说时区了。 从Mozilla的开发人员网络:   “ 0”方法依赖于底层操作系统的格式化日期。它使用脚本运行所在的操作系统的格式约定将日期转换为字符串。例如,在美国,月份出现在日期(04/15/98)之前,而在德国,日期出现在月份(15.04.98)之前。如果操作系统不符合Year 2000的要求,并且在1900年或2000年之前的年份中未使用全年,则toLocaleString返回不符合2000年的字符串。当转换操作系统格式不正确的年份时,toLocaleString的行为类似于toString。 一种可能的解决方法是使用
toLocaleDateString
toLocaleTimeString
构造自定义日期字符串。
// Something to this effect:
var d = new Date();
console.log(d.toLocaleDateString() + \" \" + d.toLocaleTimeString());
通常,它的输出中不会包含时区,但即使这样也不完美,因为您不知道输出的确切格式。 因此,最好的解决方案是使用自定义日期格式函数:
// 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);
}
要深入了解可用的
Date
方法,请在MDN上查看
Date
。     ,        据我所知,在Windows上,没有浏览器从toLocaleString返回\'EDT \', 并且只有Chrome才能返回时区。 其他平台可能会不同地分配字符串。 我最大的收获是Chrome使用当地时间的24小时制。 //测试新的Date()。toLocaleString()(Windows 7) Safari 5.0 >> 2011年6月14日,星期二15:13:43 Chrome 9.0.597.98 >> 2011年6月14日星期二15:15:01 GMT-0400(东部夏令时间) Opera 11.01 >> 2011/6/14下午15:15:37 Firefox 4.0.1 >> 2011年6月14日,星期二,下午3:16:33 MSIE 8.0 >> 2011年6月14日,星期二,下午3:16:06 MSIE 9.0 >> 2011年6月14日,星期二,下午3:17:09 它们都返回组中的小时:分钟:秒, 因此,您可以在时间之后排除任何内容:
var d=new Date().toLocaleString();
var s= d.toLocaleString().match(/^[^:]+(:\\d\\d){2} *(am|pm)\\b/i)[0];

returned value: (Chrome)
Tue Jun 14 2011 15:26:11:11
另一种方法是连接区域设置的日期和时间字符串,这令人惊讶的是,它不会在chrome上返回时区,但是您的里程可能会有所不同。
var D=new Date();
D.toLocaleDateString()+\' \'+D.toLocaleTimeString()
在Chrome中返回2011年6月14日星期二15:44:35     ,        
var dateWithoutTimeZone = function() {
  return new Date().toLocaleString().replace(/\\s*\\(?EDT\\)?/,\'\');
};
dateWithoutTimeZone(); // => \"Tue Jun 14 2011 2:58:04 GMT-0400\"
    ,        时区是否始终在字符串的末尾? (当我尝试时,时区根本不会出现。) 如果是这样,则可以使用slice方法删除字符串的最后四个字符(空格+ 3个字符的时区)。
document.write(mydate.toLocaleString().slice(0,-4));