使用JavaScript转换XML源ISO Z时间戳至大西洋时区并移除时区标识
解决ISO Z时间戳转大西洋时区并移除时区标识的问题
一、先搞定ISO时间转大西洋时区的正确姿势
看你最初的代码里用了moment-timezone但没踩对正确用法,问题出在这几个细节上:
- 你的输入是标准ISO 8601格式(
2018-05-25T23:03:26Z),moment可以直接解析,不需要额外指定格式字符串 - 大西洋时区对应的moment时区标识符是
America/Halifax(自动覆盖大西洋标准时间AST和夏令时ADT) - 要确保已经引入了
moment.js和moment-timezone.js,并且加载了对应的时区数据
修正后的toTimeZone函数应该是这样:
function toTimeZone(time, zone) { // 直接解析ISO时间,无需指定格式 return moment(time).tz(zone).format('YYYY-MM-DD HH:mm:ss'); } // 调用示例: var time = feed.getElementsByTagName("updated")[0].childNodes[0].nodeValue; var convertedTime = toTimeZone(time, 'America/Halifax');
如果不想依赖moment,原生JS也能实现:
function convertToAtlanticTime(isoString) { const date = new Date(isoString); // 原生JS会自动处理大西洋时区的夏令时切换 return date.toLocaleString('en-CA', { timeZone: 'America/Halifax', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }); }
二、移除日期字符串末尾的时区标识
你提到substring不好用(因为位置不固定),试试这几种更灵活的方法:
方法1:正则表达式精准移除括号内容
直接匹配并替换掉末尾的(xxx)格式部分:
var time = feed.getElementsByTagName("updated")[0].childNodes[0].nodeValue; var date = new Date(time); // 正则匹配末尾的空格+左括号+任意内容+右括号,替换为空 var cleanedDateStr = date.toString().replace(/\s\(.*\)$/, ''); // 示例结果:"Wed Jun 29 2011 09:52:48 GMT-0700" document.getElementById("curr").innerHTML = cleanedDateStr;
方法2:用split分割后移除最后一项
如果格式固定是时区标识在最后,用空格分割字符串后去掉最后一个元素:
var parts = date.toString().split(' '); parts.pop(); // 移除最后一个元素(即(Atlantic...)) var cleanedDateStr = parts.join(' ');
方法3:直接用toLocaleString生成干净的日期
其实根本不用先转成带时区标识的字符串,直接用toLocaleString指定格式,一步到位生成不带冗余标识的结果:
var time = feed.getElementsByTagName("updated")[0].childNodes[0].nodeValue; var date = new Date(time); var cleanedDateStr = date.toLocaleString('en-US', { timeZone: 'America/Halifax', weekday: 'short', month: 'short', day: 'numeric', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short' // 只显示GMT-0400这类缩写,不显示完整时区名称 }); // 示例结果:"Wed, Jun 29, 2011, 09:52:48 GMT-0400"
如果连GMT缩写都不想保留,删掉timeZoneName参数即可。
内容的提问来源于stack exchange,提问作者Pete Foster
相关产品推荐
相关产品推荐

