Javascript - 没有时间比较日期

时间:2015-11-11 05:41:05

标签: javascript

我试图在没有时间部分的情况下比较javascript中的两个日期。第一个日期来自jquery datepicker,第二个日期来自字符串。

虽然我可以发誓我的方法在不久前工作但现在看起来它不起作用。

我的浏览器是Firefox,但我也需要我的代码才能在IE中使用。

function selectedDateRetentionDaysElapsed() {
    var dateSelectedDate = $.datepicker.parseDate('dd/mm/yy', $('#selectedDate').val());
    // dateSelectedDate is equal to date 2015-09-30T14:00:00.000Z

    var parsedRefDate = isoStringToDate('2015-11-10T00:00:00');
    var reportingDate = getPredfinedDateWithoutTime(parsedRefDate);
    // reportingDate is equal to date 2015-11-10T13:00:00.000Z

    var businessDayCountFromCurrentReportingDate = getBusinessDayCount(dateSelectedDate,reportingDate);
    // businessDayCountFromCurrentReportingDate is equal to 39.9583333333336

    if (businessDayCountFromCurrentReportingDate >= 40) {
        return true;
    }       
    return false;
}

function isoStringToDate(dateStr) {
    var str = dateStr.split("T");
    var date = str[0].split("-");
    var time = str[1].split(":");

    //constructor is new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
    return new Date(date[0], date[1]-1, date[2], time[0], time[1], time[2], 0);
}

function getPredfinedDateWithoutTime(myDate) {
    myDate.setHours(0,0,0,0)
    return myDate;
}

我的问题是......

  1. 我的isoStringToDate函数正在返回一个带有时间的日期,即使我没有指定时间。
  2. 日期的setHours调用似乎也不起作用。
  3. 有人可以帮我解决这个问题吗。

1 个答案:

答案 0 :(得分:3)

获取两个日期之间的整天数的最简单方法是为设置为同一时间的主题日期创建两个日期对象。中午是方便的,因为它意味着日期部分不受夏令时的影响(有些地方在午夜介绍它),如果你碰巧打印出日期部分。

以下是主机系统时区内的所有计算。可以使用UTC(并且将小时设置为0,因为夏令时根本不是问题),但是输入更多内容。

E.g:



SET "userid=root"
SET "passwd=Wel<come>1%%"

for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
  pushd "C:\Program Files (x86)\PuTTY"
  SETLOCAL EnableDelayedExpansion
    plink.exe -pw !passwd! %userid%@%%i hostname
  ENDLOCAL
  popd
)
&#13;
&#13;
&#13;