检查给定日期是否在过去 3 周内

Check if given date is in last 3 weeks

我有一个样本日期:

const date = '10-03-2022';

我需要检查这个日期是否超过 3 周。或者换句话说 - 我需要检查这个日期是否在过去 3 周内或更早。

我正在尝试 date-fns,但不是我期望的结果。

import { formatDistance, subWeeks } from 'date-fns'

formatDistance(subWeeks(new Date(), 3), date)

老实说,我不知道如何处理此类问题。这就是为什么我想在这里向你寻求帮助。谢谢!

您可以使用 isAfter to compare against subWeeks。即使日期是 now.

以后的日期,这也将 return 为真

或者,您可以使用 isWithinInterval 来测试日期是否在 nownow 前三周之间。 (不包含在可用的 cdn 版本中)。

const dateIsWithinInterval = isWithinInterval(testDate,
    { start: subWeeks(new Date(), 3), end: new Date() })

您仍然需要将字符串解析为有效的 Date 对象。

//import { isAfter, subWeeks } from 'date-fns';
const { isAfter, subWeeks } = dateFns; // cdn assignment

const dateString = '10-06-2022';
const [d, m, y] = dateString.split('-').map(n => parseInt(n, 10));
// months are 0 indexed so you need to subrtract 1.
const testDate = new Date(y, m - 1, d);

const dateIsAfter = isAfter(testDate, subWeeks(new Date(), 3));

console.log('isAfter:', dateIsAfter);
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/2.0.0-alpha0/date_fns.min.js" integrity="sha512-0kon+2zxkK5yhflwFqaTaIhLVDKGVH0YH/jm8P8Bab/4EOgC/n7gWyy7WE4EXrfPOVDeNdaebiAng0nsfeFd9A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>