我从一个数据库收到一个日期,它有一个UTC格式的时间。 日期对我来说无关紧要我只需要小时和分钟。
问题
当我将日期发送到数据库时,我使用以下函数将其从本地时间转换为UTC:
self.toUTC = function (date) {
var now = new Date(date);
var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
return utc;
};
当我查看Chrome的开发工具时,我看到了以下内容:
奇怪的是,当我从数据库接收到日期并将其转换回当地时间时,它获取了正确的丹佛格林尼治时间,因为夏令时,格林尼治时间-0600。 我为它使用了这个函数:
//converts date to just time in utc format to include in menu
self.setTimeForMenu = function (dateUTC) {
var date = new Date(dateUTC + ' UTC');
var hours = (date.getHours()<10?'0':'') + date.getHours();
var minutes = (date.getMinutes()<10?'0':'') + date.getMinutes();
return hours + ':' + minutes;
};
当我看到Chrome开发工具上的日期时,我看到的是这样的:
我所尝试的
你们有谁对我下一步该做什么有建议吗?
编辑1
如果我使用now.ToUtcString()或now.ToISOString(),它不会更改任何内容,因为当我获取日期并在一个新的日期JavaScript对象中设置它时,它已经将它设置为GMT-0700:
当您将日期发送回服务器时,应该将其作为ISO UTC字符串发送,只需使用
Date.ToisoString();
如果需要显示UTC时间,可以只使用date.Getutchours()
或date.GetutcMinutes()
我认为没有必要将JS日期转换为UTC。 也就是说,JS不允许您在特定的区域设置(UTC或任何其他)中创建日期,只允许您的计算机设置为的日期。 也就是说,GetTimeZoneOffset()
始终用于本地时间。