问题描述
我正在测试一种服务,该服务可以根据时区格式化日期,它可以正常工作,但是当我运行测试时,却收到错误消息:
moment_timezone_1.default(...).utcOffset(...).format is not a function
我已经尝试使用在StackOverflow中看到的不同方法进行开发,但是它们都不起作用,错误消息会更改(例如,拆分不是函数)。
我该怎么做才能恰当地模拟我的案子时刻,或者在不嘲笑的情况下使用该时刻,但显然可以工作?
这是给出错误的函数:
export function formatTimezone(date,timezone = '+00:00',format = '') {
return moment(date)
.utcOffset(timezone)
.format(format);
}
解决方法
根据the docs utcOffset(timezone)
,如果不提供任何参数,则返回偏移量(一个数字)。提供null
时似乎也可以这样做-见下文。
console.log(moment().utcOffset(0).format())
console.log(moment().utcOffset(null).format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
您需要先验证时区输入,以确保utcOffset
在返回.format()
之前没有返回数字。