我正在检查日期是否大于第一周的结束日期。
对此有更好的方法吗?
我还需要检查时间和日期。
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")))
{
}
答案 0 :(得分:2)
您的方法存在一些问题。
首先,您实际上并没有查看周末的日期。您只是将其与第七天进行比较,因此您确实要检查日期是否是该月的前六天之一,并且有更好的方法来检查(例如调用{{1 }})。
其次,您试图将日期视为一个数字,但是将最重要的数字(年份)放在最后,这与他们应该如何排序相反。这适用于您的特定练习,因为在这种情况下月份和年份将始终相同,但如果您实际比较任何两个日期则错误。如果你包括时间,那就特别错了。在这种情况下,您有两个更好的解决方案
将您的日期转换为(tz一致或tz免费)ISO 8601日期,这些日期将正确排序。您可以使用getDate()
的{{1}}方法执行此操作。
使用Moment.js等库来进行日期操作和比较。
例如,如果您在toISOString()
中有一个Date对象,则可以使用
Date
然后您可以将其用于各种操作和比较。例如,如果您想要由nowMoment表示的月份的周末,您可以执行以下操作以获取月份的开头,然后是第一周的结束
now
然后你可以比较这些。因此,如果您想知道var nowMoment = moment(now);
变量是否在第一周结束之前,您可以使用类似
var weekEnd = moment(now).startOf('month').endOf('week');