我有一个带时间和时区的日期。
我需要这种格式的特定方式,这就是为什么我要使用矩。
说我要输入的日期字符串是2018-12-31 02:00:00.000 +00:00
我将其转换为特定格式,具体操作如下:
const properDate = moment(date, 'YYYY-MM-DD hh:mm:ss:ms')
但是,这是假设日期为UTC,而我希望它为美国/纽约时区,所以我期望的日期和时间实际上是:
2018-12-30 21:00:00.000
所以我的问题是,将日期/时间转换为特定格式时,如何将时区添加到瞬间? 我知道这不像传递参数那样简单。是我应该调用的另一个函数吗?
我尝试过
const properDate = moment(date, 'YYYY-MM-DD hh:mm:ss:ms').tz('America/New_York')
但是那也不起作用。
编辑:我还应该提到我也在使用moment-timezone
。似乎我无法以所需的方式格式化它,也无法在适当的时区中获取它。
所以基本上,我想我可以做些类似的事情:
const momentDate = moment(date)
const properDate = momentDate.tz(timezone).format('YYYY-MM-DD hh:mm:ss:ms')
不幸的是,只要我尝试对其进行格式化,它也不起作用。
答案 0 :(得分:3)
使用moment.tz
解析给定时区(例如'America/New_York'
)的时间字符串,而tz()
则用于在时区之间进行转换。
这里有一个现场样本:
const date = '2018-12-30 21:00:00.000';
const properDate = moment.tz(date, 'YYYY-MM-DD hh:mm:ss.SSS', 'America/New_York')
console.log(properDate.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>