首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他时区中保存日期/时间

问如何在其他时区中保存日期/时间
EN

Stack Overflow用户
提问于 2017-02-17 20:30:02
回答 3查看 112关注 0票数 0

我需要保存一个日期: 2017年2月16日5 5PM。

数据库(Parse)只接受JS日期。而且,我的系统时区是IST。JS日期不能保存在不同的时区。

为了克服这个问题,我保留了三个变量。日期(已计算,计算说明如下),时区偏移,时区

使用moment.tz(DateObject, Timezone)转换日期。

但是,调用toDate()函数似乎会将它改回IST。

在进一步的检查中,我发现了Moment对象的一个_d键,它似乎具有IST中转换后的日期时间。

但是,我似乎不能让它工作。

任何提示都会有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-17 21:03:39

你说的“保存在不同的时区”是什么意思?时区是表示层的关注点。01:00+00:00和02:00-01:00是同一时间的,但呈现方式不同。时间点是用一个大整数(时间戳)表示的,这个时间戳是您应该保存的内容。

当您加载此时间戳并希望再次使用它时:您可以从您选择的任何区域的角度显示它。

代码语言:javascript
复制
//-- parsing the user input...

// parse HST (Honolulu Standard Time) date-time
var inputTime = moment.tz("February 16th, 2017 5PM", "MMMM Do, YYYY hA", "Pacific/Honolulu");

// in case you want to double-check that it parsed correctly
var inputTimePrettyPrinted = inputTime.format(); // "2017-02-16T17:00:00-10:00"

// grab timestamp
var timestamp = +inputTime;

//-- presenting the stored timestamp in Indian Standard Time...

// install a timezone definition for Indian Standard Time
moment.tz.add("Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0");
moment.tz.link("Asia/Calcutta|Asia/Kolkata");

var timePresentedInIndianTime = moment(timestamp).tz("Asia/Calcutta");

var indianTimePrettyPrinted = timePresentedInIndianTime.format(); // "2017-02-17T08:30:00+05:30"
票数 2
EN

Stack Overflow用户

发布于 2017-02-17 20:41:04

尝试如下所示:

代码语言:javascript
复制
var UTC = new Date();
var UTC = UTC.getTime() // Get UTC Timestamp

var IST = new Date(date); // Clone UTC Timestamp
IST.setHours(IST.getHours() + 5); // set Hours to 5 hours later
IST.setMinutes(IST.getMinutes() + 30); // set Minutes to be 30 minutes later

var EST = new Date(date); // Clone date
EST.setHours(EST.getHours() - 4); // set EST to be 4 hour earlier

您可以根据需要进行更改。

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 20:57:46

需要使用moment tz来添加到HST

代码语言:javascript
复制
var now = new Date();
moment.tz.add('HST|HST|a0|0|');
console.clear();
var converted = moment(now).tz("HST").format();
console.log(now);

console.log(converted);

这是jsfiddle link

有关答案,请查看console.log。

代码语言:javascript
复制
Fri Feb 17 2017 18:24:49 GMT+0530 (India Standard Time) //IST time
2017-02-17T02:54:49-10:00 // HST Time
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42298025

复制
相关文章

相似问题

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