Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期格式化在Chrome浏览器中的结果与在其他浏览器中的不同?_Javascript_Date - Fatal编程技术网

Javascript 日期格式化在Chrome浏览器中的结果与在其他浏览器中的不同?

Javascript 日期格式化在Chrome浏览器中的结果与在其他浏览器中的不同?,javascript,date,Javascript,Date,我想以可读的格式显示时间。所以我使用下面的js代码。但是Chrome和IE的输出是不同的。我如何更改代码以在所有浏览器中提供相同的输出 IE中的输出:12:46 am 上午6点16分 时区为:UTC+05:30 var unadabledate=“2016-01-25T00:46:00”; var newDate=新日期(未到达日期); //变量timeZoneOffset=(新日期()).getTimezoneOffset(); //newDate.setMinutes(newDate.ge

我想以可读的格式显示时间。所以我使用下面的js代码。但是Chrome和IE的输出是不同的。我如何更改代码以在所有浏览器中提供相同的输出

IE中的输出:12:46 am

上午6点16分

时区为:UTC+05:30

var unadabledate=“2016-01-25T00:46:00”;
var newDate=新日期(未到达日期);
//变量timeZoneOffset=(新日期()).getTimezoneOffset();
//newDate.setMinutes(newDate.getMinutes()-timeZoneOffset);
警报(formatAMPM(newDate));
//以下函数以am和pm格式设置时间
函数格式AMPM(日期){
var hours=date.getHours();
var minutes=date.getMinutes();
var ampm=小时数>=12?“下午”:“上午”;
小时数=小时数%12;
小时数=小时数?小时数:12;//小时数“0”应为“12”
分钟=分钟<10?'0'+分钟:分钟;
var strTime=hours+':'+minutes+''+ampm;
返回时间;

}
使用Javascript日期构造函数将UTC格式字符串转换为日期是不可靠的。如果您想解决日期的时区问题,应该使用moment.js。要了解更多信息,请使用下面的链接

或者解决问题的简单方法是在日期中传递单个参数,而不是完整的字符串。要了解更多信息,请使用下面的链接


使用Javascript日期构造函数将UTC格式字符串转换为日期是不可靠的。如果您想解决日期的时区问题,应该使用moment.js。要了解更多信息,请使用下面的链接

或者解决问题的简单方法是在日期中传递单个参数,而不是完整的字符串。要了解更多信息,请使用下面的链接


您的问题是日期字符串被视为本地时间,而不是UTC

只需通过指定时区来明确它。改变

var unReadableDate = "2016-01-25T00:46:00";


您的问题是日期字符串被视为本地时间,而不是UTC

只需通过指定时区来明确它。改变

var unReadableDate = "2016-01-25T00:46:00";


你能试着换一下这个吗

var unadabledate=“2012-06-25T00:46:00.000Z”
var newDate=新日期(未到达日期);
//变量timeZoneOffset=(新日期()).getTimezoneOffset();
//newDate.setMinutes(newDate.getMinutes()-timeZoneOffset);
警报(formatAMPM(newDate));
//以下函数以am和pm格式设置时间
函数格式AMPM(日期){
var hours=date.getHours();
var minutes=date.getMinutes();
var ampm=小时数>=12?“下午”:“上午”;
小时数=小时数%12;
小时数=小时数?小时数:12;//小时数“0”应为“12”
分钟=分钟<10?'0'+分钟:分钟;
var strTime=hours+':'+minutes+''+ampm;
返回时间;

}
您能试着更换一下吗

var unadabledate=“2012-06-25T00:46:00.000Z”
var newDate=新日期(未到达日期);
//变量timeZoneOffset=(新日期()).getTimezoneOffset();
//newDate.setMinutes(newDate.getMinutes()-timeZoneOffset);
警报(formatAMPM(newDate));
//以下函数以am和pm格式设置时间
函数格式AMPM(日期){
var hours=date.getHours();
var minutes=date.getMinutes();
var ampm=小时数>=12?“下午”:“上午”;
小时数=小时数%12;
小时数=小时数?小时数:12;//小时数“0”应为“12”
分钟=分钟<10?'0'+分钟:分钟;
var strTime=hours+':'+minutes+''+ampm;
返回时间;

}
对于我来说,Chrome输出
1:46 am
。问题可能与用户时区有关。顺便说一句,Firefox还输出
12:46 am
。不要用日期构造函数解析字符串,这是不可靠的(正如您所发现的)。不带时区的ISO 8601日期时间字符串应该被视为本地的(即考虑系统时区偏移),但是有些浏览器不这样做,有些浏览器根本不解析。手动解析字符串,它只需要一个2行函数或库。对我来说,Chrome输出
1:46 am
。问题可能与用户时区有关。顺便说一句,Firefox还输出
12:46 am
。不要用日期构造函数解析字符串,这是不可靠的(正如您所发现的)。不带时区的ISO 8601日期时间字符串应该被视为本地的(即考虑系统时区偏移),但是有些浏览器不这样做,有些浏览器根本不解析。手动解析字符串,它只需要一个2行函数或库。谢谢您的回答。但解决方案并不奇怪(我在IE11和Chrome btw中尝试过)。您是否尝试过使用不同的构造函数指定日期对象(例如
newdate(2016,1,25,0,46,0)
),请参见Nitin Garg的答案。不要用日期构造函数解析字符串。谢谢你的回答。但解决方案并不奇怪(我在IE11和Chrome btw中尝试过)。您是否尝试过使用不同的构造函数指定日期对象(例如
newdate(2016,1,25,0,46,0)
),请参见Nitin Garg的答案。不要用日期构造函数解析字符串。是的。。这很有效。。它在Chrome和IEGood中都能产生相同的效果。如果你认为这是正确的答案,请接受它。谢谢。。这很有效。。它在Chrome和IEGood中都能产生相同的效果。如果你认为这是正确的答案,请接受它。谢谢你唯一明智的回答。唯一明智的回答。