javascript - 从开始日期时间(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);
请注意时区。提前感谢!
解决方案
我又试了一次,最后用 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);
推荐阅读
- serilog - Serilog Graylog 无法登录 Graylog
- python - 无法在python中导入numpy
- c++ - Aws GetObject 是将所有数据下载到内存还是文件缓存?
- ios - iOS/Swift/Xcode:推荐放置应用程序范围的键、属性和配置的地方?
- javascript - 如何使用 d3.js 根据某些标准制作散点图
- html - 如何使绝对父级中的 div 保持底部?
- c# - c#代码在Linux上为GhostscriptRasterizer出错
- python - 尝试在命令提示符下安装键盘“不被识别为内部或外部命令、可运行程序或批处理文件”错误
- reactjs - Fluent UI React 命令栏使用状态不可能
- android - Android通知文本跨度颜色在暗模式下不起作用