移除';EDT&x27;从带有tolocalString()的javascript返回的日期开始

移除';EDT&x27;从带有tolocalString()的javascript返回的日期开始,javascript,date,formatting,edt,Javascript,Date,Formatting,Edt,我对javascript比较陌生,所以这可能是一个非常简单的问题。有没有一种简单的方法可以在返回toLocaleString的日期后停止“EDT”打印? 谢谢 时区是否总是在字符串的末尾?(我尝试时根本不显示时区。) 如果是,则可以使用删除字符串的最后四个字符(空格+3个字符的时区) 时区总是在字符串的末尾吗?(我尝试时根本不显示时区。) 如果是,则可以使用删除字符串的最后四个字符(空格+3个字符的时区) 据我所知,在windows上,没有浏览器从toLocaleString返回“EDT”, 而

我对javascript比较陌生,所以这可能是一个非常简单的问题。有没有一种简单的方法可以在返回toLocaleString的日期后停止“EDT”打印?
谢谢

时区是否总是在字符串的末尾?(我尝试时根本不显示时区。)

如果是,则可以使用删除字符串的最后四个字符(空格+3个字符的时区)


时区总是在字符串的末尾吗?(我尝试时根本不显示时区。)

如果是,则可以使用删除字符串的最后四个字符(空格+3个字符的时区)


据我所知,在windows上,没有浏览器从toLocaleString返回“EDT”, 而且只有Chrome可以返回时区

其他平台可能会以不同方式分配字符串

我最大的不满是Chrome使用24小时时钟作为本地时间

//测试新日期().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(东部夏时制)
  • 歌剧院2011年6月14日下午3: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()

返回2011年6月14日星期二15:44:35在Chrome中据我所知,在windows上没有浏览器从toLocaleString返回“EDT”, 而且只有Chrome可以返回时区

其他平台可能会以不同方式分配字符串

我最大的不满是Chrome使用24小时时钟作为本地时间

//测试新日期().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(东部夏时制)
  • 歌剧院2011年6月14日下午3: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()

返回2011年6月14日星期二15:44:35在Chrome中无法确定toLocaleString将返回什么;你当然不能保证
EDT
会出现在每台运行它的机器上,更不用说任何时区指示了

来自Mozilla的开发者网络:

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

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

这通常不会在其输出中包含时区,但即使这样也不完美,因为您无法知道输出的确切格式

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

// 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);
}
//将前导零添加到小于10[000…]的数字中
函数padZ(num,n){
n=n | | 1;//默认设置为10^1
returnnum

要深入了解可用的
Date
方法,请查看MDN。

无法确定
toLocaleString
将返回什么;你当然不能保证
EDT
会出现在每台运行它的机器上,更不用说任何时区指示了

来自Mozilla的开发者网络:

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

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

这通常不会在其输出中包含时区,但即使这样也不完美,因为您无法知道输出的确切格式

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

// 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);
}
//将前导零添加到小于10[000…]的数字中
函数padZ(num,n){
n=n | | 1;//默认设置为10^1
返回数值<数学功率(10,n)?“0”+nu