检查日期是否大于一个月的第一个周结束日期

Check if a date is greater than the first week end date of a month

本文关键字:日期 第一个 周结束 结束 一个 大于 检查 是否      更新时间:2023-09-26

这就是我检查日期是否大于第一周结束日期的方式。

有没有更好的方法?

我还需要检查时间和日期。

function getTodayDate() {
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth() + 1; //January is 0!
  var yyyy = today.getFullYear();
  if (dd < 10) {
    dd = '0' + dd
  }
  if (mm < 10) {
    mm = '0' + mm
  }
  today = dd + '/' + mm + '/' + yyyy;
  return today;
}
function getFirstWeekDate() {
  var today = new Date();
  var dd = "7";
  var mm = today.getMonth() + 1; //January is 0!
  var yyyy = today.getFullYear();
  if (dd < 10) {
    dd = '0' + dd
  }
  if (mm < 10) {
    mm = '0' + mm
  }
  return dd + '/' + mm + '/' + yyyy;
}
var startDate = getTodayDate();
var endDate = getFirstWeekDate();
var regExp = /('d{1,2})'/('d{1,2})'/('d{2,4})/;
if (parseInt(endDate.replace(regExp, "$3$2$1")) < parseInt(startDate.replace(regExp, "$3$2$1"))) 
{
}

你的方法有几个问题。

首先,你实际上并没有检查周末的日期。您只是将其与第七天进行比较,因此您实际上是在检查该日期是否是该月的前六天之一,并且有更好的方法来检查(例如拨打getDate())。

其次,您试图将日期视为一个数字,但将最高有效数字(年份)放在末尾,这与它们应该如何排序的内容相反。这适用于您的特定实践,因为在这种情况下,月份和年份将始终相同,但如果您实际上比较任何两个日期,那就是错误的。如果你包括时间,那就特别错误了。在这种情况下,您有两个更好的解决方案

  1. 将您的日期转换为(tz 一致或 tz 免费)ISO 8601 日期,该日期将正确排序。您可以使用DatetoISOString()方法来执行此操作。

  2. 使用诸如 Moment.js 之类的库来执行日期操作和比较。

例如,如果您在 now 中有一个 Date 对象,则可以创建一个表示此对象的 Moment 对象

var nowMoment = moment(now);

然后,您可以将其用于各种操作和比较。例如,如果您希望 nowMoment 表示的月份的周末,您可以执行以下操作来获取该月的开始,然后是第一周的结束。

var weekEnd = moment(now).startOf('month').endOf('week');

然后,您可以比较这些。因此,如果您想知道now变量是否在第一周结束之前,您可以使用类似

var isFirstWeek = nowMoment.isBefore( weekEnd );