使用Moment.js转换UTC时区遇格式警告的解决方法
解决Moment.js时区转换的警告问题
问题出在你先把UTC时间转成了仅包含时分秒的字符串,然后用这个不完整的字符串创建moment实例——Moment无法识别这种格式,只能 fallback 到原生Date构造函数,这就是警告的原因。
直接用moment对象做时区转换就好,不用先转成字符串:
// 直接获取UTC时间的moment实例,转洛杉矶时区后按需格式化 const americaTime = moment().utc().tz("America/Los_Angeles").format('HH:mm:ss');
如果是已经拿到了HH:mm:ss格式的UTC时间字符串(比如从外部获取的),那必须补充日期信息,并且明确告诉Moment解析格式,比如假设是当天的UTC时间:
const time = "07:57:49"; // 已有的UTC时分秒 // 拼接当天UTC日期+时间的完整字符串 const fullUtcDateTime = `${moment.utc().format('YYYY-MM-DD')}T${time}`; // 用moment.utc解析完整时间,再转时区 const americaTime = moment.utc(fullUtcDateTime, 'YYYY-MM-DDTHH:mm:ss') .tz("America/Los_Angeles") .format();
这样就不会触发警告了,因为Moment能明确识别你传入的时间格式和时区。
内容的提问来源于stack exchange,提问作者Rishan.RM
相关产品推荐
相关产品推荐

