使用 MomentJS 将 ISO 8601 转换为不同的 ISO 8601 格式
Convert ISO 8601 to a different ISO 8601 format using MomentJS
有没有办法像这样的格式:
2003-09-25T14:00:00.000+1000
or
2003-09-25T14:00:00.000+1100
要这样转换
2003-09-25T14:00:00.000Z
不使用手册,只使用 MomentJS。我也想知道 +1000 或 +1100 是什么意思。
可以获取偏移时间并将它们添加回时间。
var timeStrings = [
'2003-09-25T14:00:00.000+1000',
'2003-09-25T14:00:00.000+1100'
];
console.log(timeStrings.map(ts => {
var m = moment(ts);
m.add(m._tzm, 'minutes'); // Add total minute offset
return m.toISOString();
}));
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
显示时不修改时刻对象的替代方法。
var timeStrings = [
'2003-09-25T14:00:00.000+1000',
'2003-09-25T14:00:00.000+1100'
];
var moments = timeStrings.map(ts => moment(ts));
// The moments are not modified when displayed...
console.log(moments.map(momentDateAsUtc));
function momentDateAsUtc(m) {
var clone = m.clone();
clone.add(m._tzm, 'minutes'); // Add total minute offset
return clone.toISOString();
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
如果你想要以 UTC 显示时间,实际上没有什么可做的,因为 momentjs 已经在内部处理 UTC 时间,在解析它们时将偏移日期转换为 UTC :
var moments = [
moment('2003-09-25T14:00:00.000+1000'), // 2PM in Srednekolymsk, Russia
moment('2003-09-25T14:00:00.000+1100') // 2PM in Sydney, Australia
]; // Note that they are NOT the same time, nor are they the same as 14:00:00Z
console.log(moments);
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
有没有办法像这样的格式:
2003-09-25T14:00:00.000+1000 or 2003-09-25T14:00:00.000+1100
要这样转换
2003-09-25T14:00:00.000Z
不使用手册,只使用 MomentJS。我也想知道 +1000 或 +1100 是什么意思。
可以获取偏移时间并将它们添加回时间。
var timeStrings = [
'2003-09-25T14:00:00.000+1000',
'2003-09-25T14:00:00.000+1100'
];
console.log(timeStrings.map(ts => {
var m = moment(ts);
m.add(m._tzm, 'minutes'); // Add total minute offset
return m.toISOString();
}));
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
显示时不修改时刻对象的替代方法。
var timeStrings = [
'2003-09-25T14:00:00.000+1000',
'2003-09-25T14:00:00.000+1100'
];
var moments = timeStrings.map(ts => moment(ts));
// The moments are not modified when displayed...
console.log(moments.map(momentDateAsUtc));
function momentDateAsUtc(m) {
var clone = m.clone();
clone.add(m._tzm, 'minutes'); // Add total minute offset
return clone.toISOString();
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
如果你想要以 UTC 显示时间,实际上没有什么可做的,因为 momentjs 已经在内部处理 UTC 时间,在解析它们时将偏移日期转换为 UTC :
var moments = [
moment('2003-09-25T14:00:00.000+1000'), // 2PM in Srednekolymsk, Russia
moment('2003-09-25T14:00:00.000+1100') // 2PM in Sydney, Australia
]; // Note that they are NOT the same time, nor are they the same as 14:00:00Z
console.log(moments);
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>