javascript - 如何在javascript中获取指定时区一天的开始时间和结束时间?

标签 javascript timezone momentjs luxon

如标题所述,我想获取特定时区一天的开始时间和结束时间,并将它们转换为 utc 时间。这是我的部分实现:

//convert current local time to specified timezone time
var converted = moment.tz(moment(), timezone).format("YYYY-MM-DD");
var full_format = "YYYY-MM-DD HH:mm:ss";

// get start time and end time in the timezone
var start = converted + " 00:00:00";
var end = converted + " 23:59:59";

// how to convert them in utc time by momentjs or other methods? 
var utc_start_time = ?
var utc_end_time = ?

问题是如何将某个时区的时间转换为utc时间。或者还有其他合适的解决方案吗?谢谢!

编辑:

我想出了一种自己制作的方法,但不太体面。

var converted = moment.tz(moment(), timezone).format("YYYY-MM-DD");         
var full_format = "YYYY-MM-DD HH:mm:ss";
var start = converted + " 00:00:00";
var end = converted + " 23:59:59";
var utc_start_time = moment(start).add(utc_offset * -1, 'hours').format(full_format);
var utc_end_time = moment(end).add(utc_offset * -1, 'hours').format(full_format); 

欢迎提出任何改进建议。谢谢

最佳答案

取决于你到底想做什么:

// for the current day
var start = moment.tz(timezone).startOf('day').utc();
var end = moment.tz(timezone).endOf('day').utc();

// for a specific moment (m)
var start = m.clone().tz(timezone).startOf('day').utc();
var end = m.clone().tz(timezone).endOf('day').utc();

// for a specific calendar date
var m = moment.tz(date, format, timezone);
var start = m.clone().startOf('day').utc();
var end = m.clone().endOf('day').utc();

然后,您可以使用 format 函数格式化 startend

另请记住,并非每个时区的每一天都从午夜开始,也并非所有本地的日子都是 24 小时。

关于javascript - 如何在javascript中获取指定时区一天的开始时间和结束时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031220/

相关文章:

javascript - 如何使 block 中的所有链接在新选项卡中打开

c++ - 使用 boost 将 UTC 时间转换为自定义时区

javascript - 在 Google Sheets Apps Script 中,如何检查工作表是否存在以及是否不添加

javascript - contentEditable attr 设置为 true 会使内容中的链接不可点击

javascript - 如何检测一个元素位于另一个元素之上

mysql - 如何按日期分组,考虑时区和 DST?

objective-c - 获取日期与 [NSDate date] 相差几个小时

javascript - moment.js 将日期转换为不同的格式

javascript - 使用 Moment.js 格式化日期和减去天数

Laravel mix webpack - 导入 Moment.js 时忽略语言环境