【问题标题】:Change only the local TimeZone to Default UTC using Javascript使用 Javascript 仅将本地时区更改为默认 UTC
【发布时间】: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


【解决方案1】:

你可以试试下面这段代码

date.setMinutes((date.getTimezoneOffset() * -1));

无需本地化,在进行任何服务调用之前使用此代码。它会将您在日期选择器中选择的确切日期传递给您。

它适用于所有时区 (+) 和 (-),

例如:1990-01-01 00:00:00 GMT+0530 (India Standard Time),上面说的代码将其转换为1990-01-01 05:30:00 GMT+0530 (India Standard Time)。在服务时,它将其转换为1990-01-01 00:00:00

我认为它会解决你的问题。

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多