【发布时间】:2017-07-07 11:46:39
【问题描述】:
我需要将本地或当前时区更改为默认 UTC (GMT+0000) 时区。
我使用了预定义的javascript函数toLocaleString,但有些机器有自己的日期时间格式,所以服务请求不匹配。
我的要求是只更改时区而不更改当前值(NO CONVERSTION)
let dtime = new Date();
console.log(dtime);
输出:Fri Jul 07 2017 17:07:32 GMT+0530 (India Standard Time)
要求格式为Fri Jul 07 2017 17:07:32 GMT+0000 (???)
场景:我在 DatePicker (Angular Material) 中选择 DOB,它返回 datetime offset 值。如果我将这些值从 client 传递到 Server,它会自动将其转换为 Local to UTC Default。
例如:我在 datepicker 中选择 DOB 为 1990-01-01,它返回值 1990-01-01 00:00:00 但在HTTP 调用它是 1989-12-31 18:30:00。因为我在 印度 (UTC +0530),所以它减去了 05 小时和 30 分钟。这是我面临的问题。
请帮助我。
【问题讨论】:
-
时区不是在浏览器中设置的吗?
-
是的,我需要将客户端的日期时间作为 UTC 的默认日期时间传递。因此,我使用了 javascript 预定义方法
toLocaleString,但在某些机器上,它会使用一些不合适的格式转换日期时间。我调试了代码,它根据本地机器设置进行转换。所以,我不能使用这种方法。我需要一个解决方案,所以... -
您可以尝试 dtime.getUTCFullYear()、getUTCDate()、getUTCMonth()、getUTCHours()、getUTCMinutes()、getUTCSeconds()、getUTCMilliseconds() 函数,然后像这样组合:return year + '-' + 日 + '-' + 月 + 'T' + 小时 + ':' + 分钟 + ':' + 秒 + '.' + 毫秒 + 'Z';或者你可以按照我下面的回答试试。
-
按照您的要求去做很容易,但在我回答之前,您能否详细说明一下为什么您要这样做? “我的要求是……”不是很有帮助。我在这方面有丰富的经验,我可以想象几乎没有任何情况下你要求的事情是正确的。如果您在系统中引入了一个严重的错误,因为您认为这是必需的,那将是可悲的。
标签: javascript datetime timezone timezone-offset