我很难将UTC日期字符串与偏移量一起调整,并准确地将时间调整为用户本地时间。我在服务器上收到一个日期:2017-06-21T20:26:28.744Z
,我需要将其转换为发件人当地时间的时间戳。为了这个例子,我们假设偏移是6个小时。
我知道这可能是错误的,z部分解释了偏移的真正含义。
我需要暂时将2017-06-21T20:26:28.744Z
变为2017-06-21T14:26:28
。
这样做似乎给了我字符串的UTC部分并切断了偏移量。我需要使用偏移来调整小时/分钟
moment
.utc('2017-06-21T20:26:28.744Z')
.local()
.format('YYYY-MM-DDTHH:mm:ss')
// 2017-06-21T20:26:28"
// I need 2017-06-21T14:26:28
答案 0 :(得分:0)
您可以使用utcOffset
通过提供分钟来设置UTC偏移。请注意,一旦设置了偏移量,它就是固定的,并且不会自行更改(即没有DST规则)。如果您想要某个特定位置的实际时区 - 时间,例如
America/Los_Angeles
,请考虑moment-timezone。如果输入小于
16
且大于-16
,则会将您的输入解释为小时。
这是一份工作样本:
console.log( moment
.utc('2017-06-21T20:26:28.744Z')
.utcOffset(-6)
.format('YYYY-MM-DDTHH:mm:ss') );
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
如果您想使用时刻时区,可以使用tz()
方法:
console.log( moment
.utc('2017-06-21T20:26:28.744Z')
.tz('America/Chicago')
.format('YYYY-MM-DDTHH:mm:ss') );
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.min.js"></script>