我从数据库中收到一个日期为UTC格式的日期。 这个日期与我无关,我只需要时间和分钟。
问题
当我将日期发送到数据库时,我使用此功能将其从本地时间转换为UTC:
self.toUTC = function (date) {
var now = new Date(date);
var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
return utc;
};
当我查看Chrome中的开发者工具时,我看到了这一点:
奇怪的是,当我从数据库收到日期并将其转换回当地时间时,由于夏令时,它会抓取正确的GMT GMT GMT -0600 GMT。我使用这个功能:
//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()它不会改变任何东西,因为当我抓住日期并在新的Date JavaScript对象中设置它时它已经将它设置为GMT -0700:
答案 0 :(得分:0)
当您将日期发送回服务器时,您应该将其作为ISO UTC字符串发送,只需使用
如果您需要显示UTC时间,可以使用date.getUTCHours()
或date.getUTCMinutes()
我认为不需要将JS日期转换为UTC。也就是说,JS不允许您在特定区域设置(UTC或任何其他区域)中创建日期,只允许您计算机设置的日期。也就是说,getTimeZoneOffset()
始终是当地时间。