我需要保存一个日期: 2017年2月16日5 5PM。
数据库(Parse)只接受JS日期。而且,我的系统时区是IST。JS日期不能保存在不同的时区。
为了克服这个问题,我保留了三个变量。日期(已计算,计算说明如下),时区偏移,时区
使用moment.tz(DateObject, Timezone)转换日期。
但是,调用toDate()函数似乎会将它改回IST。
在进一步的检查中,我发现了Moment对象的一个_d键,它似乎具有IST中转换后的日期时间。
但是,我似乎不能让它工作。
任何提示都会有帮助。
发布于 2017-02-17 21:03:39
你说的“保存在不同的时区”是什么意思?时区是表示层的关注点。01:00+00:00和02:00-01:00是同一时间的,但呈现方式不同。时间点是用一个大整数(时间戳)表示的,这个时间戳是您应该保存的内容。
当您加载此时间戳并希望再次使用它时:您可以从您选择的任何区域的角度显示它。
//-- 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"发布于 2017-02-17 20:41:04
尝试如下所示:
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您可以根据需要进行更改。
发布于 2017-02-17 20:57:46
需要使用moment tz来添加到HST
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);有关答案,请查看console.log。
Fri Feb 17 2017 18:24:49 GMT+0530 (India Standard Time) //IST time
2017-02-17T02:54:49-10:00 // HST Timehttps://stackoverflow.com/questions/42298025
复制相似问题