首页 > 解决方案 > 从开始日期时间(ISO 格式)和持续时间(hh:mm 格式)计算结束日期时间(ISO 格式)

问题描述

让,

开始日期时间=>2019-05-18T11:40:00-07:00

时区=>-07:00

持续时间=>23:10

持续时间小时=>23

持续时间最小值=>10

结束日期时间=> ?? (与 的格式相同startDateTime

到目前为止,我尝试如下:

const endMs = (+new Date(startDateTime)) + (((durationHrs)*60*60+(durationMin)*60)*1000);
const endDateTime = `${new Date(endMs).toISOString().split('.')[0]}${timeZone}`;
console.log(endDateTime);

请注意时区。提前感谢!

标签: javascriptmomentjs

解决方案


我又试了一次,最后用 javascript 和 momentjs 玩毫秒得到了解决方案。

const st = '2019-05-18T11:40:00-07:00';

const tz = '-07:00'

const dur = '23:10';

const hr = 23;

const mn = 10;


const convert = (num) => num < 10 ? "0" + num : num;
const hrs = hr * 60 * 60 * 1000;
const mins = mn * 60 * 1000;
const getms = new Date(`${st.split('-')[0]}:00`).getTime();
const totalMs = getms + hrs + mins;

const year = new Date(totalMs).getFullYear();
const month = convert(new Date(totalMs).getMonth()+1);
const date = convert(new Date(totalMs).getDate());

const getHrs = convert(new Date(totalMs).getHours());
const getMin = convert(new Date(totalMs).getMinutes());

const getendTime = `${year}-${month}-${date} ${getHrs}:${getMin}:00`;


const momentend = moment.tz(getendTime, moment.tz.guess()).clone().tz(this.$data.selectedZone.split('$')[1]).format();

console.log(momentend);

推荐阅读