javascript - Moment Js 我怎么知道我在目标时间的一个小时内?
问题描述
我正在使用 Moment.js 来尝试确定用户是否在他们预定出发时间的一小时内。如果是,则启用 UI 中的按钮,允许他们开始离开。因此,例如,如果他们打算在下午 3:00 离开,那么他们不应该被允许在下午 1:59 之前按下按钮,但他们应该在下午 2:00 时按下按钮。
目前我正在为我的功能使用以下内容:
const calculateTime = (depTime: string) => {
const currentTime = moment();
const hourBeforeDepartue = moment(depTime).subtract(1, 'hour');
const isWithinHour = currentTime.isBetween(hourBeforeDepartue, depTime);
return isWithinHour;
};
这里的问题是,当我用 jest 测试它时,我的函数返回 false:
import { calculateTime } from './calculateTime';
import moment from 'moment';
describe('Function that determines if the time is within departure range', () => {
it('Is in the hour of departure', () => {
const oneHourFromNow = moment()
.add(1, 'hour')
.format('H:H');
console.log(oneHourFromNow);
const response = calculateTime(oneHourFromNow);
expect(response).toBe(true);
});
});
我不确定为什么它会返回 false,而且我不知道有更好的方法来做到这一点。任何帮助,将不胜感激!
解决方案
我最终获得了一个名为 twix 的 moment.js 插件。该插件检查当前时间是否在目标出发时间和之前一小时的时间之间。
import moment from 'moment';
require('twix');
export class Time {
time: string;
constructor(time: string) {
this.time = time;
}
}
export type DepartureTime = string;
export class CheckTime extends Time {
public constructor(departureTime: DepartureTime) {
super(departureTime);
this.isWithinHour = this.isWithinHour.bind(this);
}
private validateTime(departureTime: DepartureTime): boolean {
return moment(departureTime).isValid();
}
public isWithinHour(time: DepartureTime): boolean | null {
if (!this.validateTime(time)) {
return null;
}
const departureTime = moment(time).format();
const oneHourPrior = moment(time)
.subtract(1, 'h')
.format();
const timing = moment(oneHourPrior).twix(departureTime);
return timing.isCurrent();
}
}
推荐阅读
- python - 在 aiohttp 中使用共享 TCPConnector 时出错
- json - 无法在没有“”符号的情况下快速解析 JSON(手表套件)
- docker - 如何使用 Docker Build 修复 Azure DevOps 构建中的“访问路径 csproj.nuget.g.props 被拒绝”错误?
- excel - 在 VBA 中编写索引和 LinEst 公式
- python - 数据流作业因无法在梁 2.14 中找到 ext4 文件系统而挂起
- python - 如何修复此堆栈溢出错误(python)?
- laravel - 在客户端计算机上下载 youtube 播放列表
- mysql - MySQL:用户“root@localhost”的访问被拒绝(使用密码:否)
- python - Shebang (#!) 在 Python 脚本中不起作用
- python - 如何从用户那里获取输入并将其存储在外部文件中?