2016-03-07 79 views
0

这是我如何检查日期是否大于第一周的结束日期。检查一个日期是否大于一个月的第一周结束日期

有没有更好的方法呢?

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

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

看看[momentjs(http://momentjs.com/) – Zamboney

+0

有*是* javascript中的Date对象。当你转换为字符串时,它应该用于显示用户。如果那样,你将它转换成你可以比较的东西,那么你可能做错了什么。 – Neil

回答

2

您的方法有几个问题。

首先,你实际上并没有检查周末的日期。你只是将它与第七天进行比较,所以你真的要检查日期是否是一个月的前六天,并且有更好的方法来检查(例如调用getDate())。

其次,您试图将日期视为一个数字,但将最重要的数字(年份)放在最后,这是从他们应如何分类的事情中倒退出来的。这对你的具体做法很好,因为在这个例子中月份和年份总是相同的,但如果你实际上比较了任何两个日期,那就错了。如果你包括时间,这是特别错误的。在这种情况下,你有两个更好的解决方案

  1. 打开您的日期,(TZ一致或TZ免费)ISO 8601个日期这将排序正确。您可以使用DatetoISOString()方法来执行此操作。

  2. 使用库如Moment.js进行日期操作和比较。

例如,如果你在now有个约会对象,你可以创建一个表示这个时刻的对象与

var nowMoment = moment(now); 

然后你可以使用各种操作和比较。例如,如果你想在本周由nowMoment代表的月底,你可以做到以下几点,以获得一个月的开始,然后在第一周结束

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

然后,您可以比较这些。所以,如果你想知道,如果now变量是第一个星期结束前,你可以使用像

var isFirstWeek = nowMoment.isBefore(weekEnd); 
+0

感谢您的回复!它确实工作:) – Debs

相关问题