首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Javascript中将UTC/ GMT日期时间转换为CST?(非本地,CST始终)

如何在Javascript中将UTC/ GMT日期时间转换为CST?(非本地,CST始终)
EN

Stack Overflow用户
提问于 2015-12-19 02:31:08
回答 6查看 27.8K关注 0票数 8

我遇到了一个难题,即后端数据始终以UTC时间存储。我们的前端数据始终以CST表示。我无法进入这个“黑匣子”。

我想将其镜像到我们的数据仓库中。总部设在欧洲(CET)。因此,“本地”转换将不起作用。

我想知道最简单、最直接的方法来准确地将UTC时间转换为中央标准时间(我可以将其转换为纪元毫秒或日期格式'2015-01-01 00:00:00')。(根据夏令时的情况,延迟5或6个小时)。

我看到很多关于转换为“本地”时间的帖子……再说一次,我不想这样,我也不想简单地减去6个小时,这将是错误的半年。

有谁有什么想法吗?这似乎是一个非常常见的问题,但我已经搜索了一段时间,但什么也没有找到。

EN

回答 6

Stack Overflow用户

发布于 2015-12-19 05:36:12

moment-timezone附加组件中使用moment.js可以简化此任务。

代码语言:javascript
复制
// construct a moment object with UTC-based input
var m = moment.utc('2015-01-01 00:00:00');

// convert using the TZDB identifier for US Central time
m.tz('America/Chicago');

// format output however you desire
var s = m.format("YYYY-MM-DD HH:mm:ss");

此外,由于您指的是整个北美中部时区,因此您应该说“中部时间”或"CT“。适用于北美的缩写"CST“明确表示UTC-6,而"CDT”缩写将在夏令时用于UTC-5。

不过,使用缩写时一定要小心。"CST“可能意味着”中国标准时间“。(它实际上有five different interpretations)。

票数 8
EN

Stack Overflow用户

发布于 2015-12-19 02:55:36

您可以使用时区偏移量来确定应该减去5小时还是6小时。

代码语言:javascript
复制
var dateJan;
var dateJul;
var timezoneOffset;

var divUTC;
var divCST;

// Set initial date value
dateValue = new Date('10/31/2015 7:29:54 PM');

divUTC = document.getElementById('UTC_Time');
divCST = document.getElementById('CST_Time');
divUTC.innerHTML = 'from UTC = ' + dateValue.toString();

// Get dates for January and July
dateJan = new Date(dateValue.getFullYear(), 0, 1);
dateJul = new Date(dateValue.getFullYear(), 6, 1);

// Get timezone offset
timezoneOffset = Math.max(dateJan.getTimezoneOffset(), dateJul.getTimezoneOffset());

// Check if daylight savings
if (dateValue.getTimezoneOffset() < timezoneOffset) {
  // Adjust date by 5 hours
  dateValue = new Date(dateValue.getTime() - ((1 * 60 * 60 * 1000) * 5));
}
else {
  // Adjust date by 6 hours
  dateValue = new Date(dateValue.getTime() - ((1 * 60 * 60 * 1000) * 6));
}

divCST.innerHTML = 'to CST = ' + dateValue.toString();
代码语言:javascript
复制
<div id="UTC_Time"></div>
<br/>
<div id="CST_Time"></div>

票数 4
EN

Stack Overflow用户

发布于 2018-07-05 03:35:02

您可以使用下面的代码片段进行转换。

代码语言:javascript
复制
function convertUTCtoCDT() {
    var timelagging = 6; // 5 or 6
    var utc = new Date();
    var cdt = new Date(utc.getTime()-((1 * 60 * 60 * 1000) * timelagging));
    console.log("CDT: "+cdt);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34361866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档