JavaScript返回时间不正确

JavaScript返回时间不正确,javascript,Javascript,我正在开发移动应用程序,并使用以下日期字符串构造日期对象。但是我需要输出的时间字符串比输入的时间奇怪 输入时间: 2014-01-09T20:40:00 输出时间: 10th January, 2:10am 为了构造date对象,我使用以下代码 var date = new Date('2014-01-09T20:40:00'); Dates.getAMPMTimeFromDateObject = function (date) { var dateSuffi

我正在开发移动应用程序,并使用以下日期字符串构造日期对象。但是我需要输出的时间字符串比输入的时间奇怪

输入时间:

2014-01-09T20:40:00
输出时间:

  10th January, 2:10am 
为了构造date对象,我使用以下代码

var date = new Date('2014-01-09T20:40:00');

Dates.getAMPMTimeFromDateObject = function (date) {
            var dateSuffix = Constants.Formatting.DateAMSuffix,
                hours = date.getHours(),
                minutes = date.getMinutes(),
                minutesString;

            hours = (hours + 24) % 24;

            if (hours === 0) {
                hours = 12;
            } else if (hours > 12) {
                hours = hours % 12;
                dateSuffix = Constants.Formatting.DatePMSuffix;
            } else if (hours === 12) { //This is specific fix for 12PM exceptional case
                dateSuffix = Constants.Formatting.DatePMSuffix;
            }

            minutesString = (minutes < 10) ? '0' + minutes : minutes;

            return hours + ':' + minutesString + dateSuffix;
        };
var日期=新日期('2014-01-09T20:40:00');
Dates.GetAmpTimeFromDateObject=函数(日期){
var dateSuffix=Constants.Formatting.DateAMSuffix,
小时=日期。getHours(),
分钟数=日期。getMinutes(),
细弦;
小时=(小时+24)%24;
如果(小时==0){
小时=12;
}否则,如果(小时数>12){
小时数=小时数%12;
dateSuffix=Constants.Formatting.DatePMSuffix;
}否则,如果(小时===12){//这是针对中午12点例外情况的特定修复
dateSuffix=Constants.Formatting.DatePMSuffix;
}
分钟字符串=(分钟<10)?“0”+分钟:分钟;
返回小时数+':'+分钟字符串+日期后缀;
};

您的问题很可能是由于时区造成的。您所在的国家是否有

您的输出时间使用当前区域设置进行了清晰的格式化

换句话说,你的约会没有问题!您需要考虑如何处理代码中的时区。


通常,请确保代码中的日期为GMT,在解析/序列化日期时使用,并且在向用户显示时仅将日期转换为特定时区。

您绝对需要为ISO日期字符串指定时区。这是一个跨浏览器兼容性问题

如果未指定时区,请执行以下操作:

  • Chrome假定您的输入是UTC
  • Firefox/IE假定您的输入是本地的
一个快速解决方法是明确使用UTC:

var date = new Date('2014-01-09T20:40:00Z'); //note 'Z' for "zero-offset"
但是,较旧的浏览器甚至不理解ISO日期/时间输入,因此请谨慎使用


关于日期/时间字符串兼容性的一个方便的参考资料:

是否检查了您的时区?尝试使用此api处理日期是否可以显示输出错误时间的代码?