Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 就我而言,如何确定假期日期?_Javascript_Date_Object - Fatal编程技术网

Javascript 就我而言,如何确定假期日期?

Javascript 就我而言,如何确定假期日期?,javascript,date,object,Javascript,Date,Object,我正在努力获得给定日期范围内的假期 例如: var holiday = ['2014-01-01','2014-07-04','2014-12-24', '2014-12-25'...other holidays elements ]; var startDate = '2014-08-01' var endDate = '2014-12-30'; var holidays=getHolidays(startDate, endDate); //console.log(holidays) -&

我正在努力获得给定日期范围内的假期

例如:

var holiday = ['2014-01-01','2014-07-04','2014-12-24', '2014-12-25'...other holidays elements ];

var startDate = '2014-08-01'
var endDate = '2014-12-30';

var holidays=getHolidays(startDate, endDate);
//console.log(holidays) -> output 2014-12-24 and 2014-12-25.

getHolidays = function(startDate, endDate) {
    var holidays=[];
    //not sure how to get holidays here....
    return holidays
}

我希望写一个函数来得到2014-12-24和2014-12-25。我的大脑现在已经崩溃了,我不知道什么是最好的解决方法。有人能帮我吗?非常感谢

您可以尝试将它们转换为日期对象,然后以这种方式进行比较。比如:

var holidays = ['2014-01-01','2014-07-04','2014-12-24', '2014-12-25'];

var startDate = '2014-08-01';
var endDate = '2014-12-30';

var getHolidays = function(startDate, endDate) {
    var startTime = new Date(startDate).getTime();
    var endTime = new Date(endDate).getTime();
    var output = [];

    holidays.forEach(function(holiday) {
        var holidayTime = new Date(holiday).getTime();

        if (holidayTime >= startTime && holidayTime <= endTime) {
            output.push(holiday);
        }
    });

    return output;
}


var holidays = getHolidays(startDate, endDate);

console.log(holidays);
var假日=['2014-01-01'、'2014-07-04'、'2014-12-24'、'2014-12-25'];
风险值起始日期='2014-08-01';
var endDate=‘2014-12-30’;
var getHolidays=函数(开始日期、结束日期){
var startTime=新日期(startDate).getTime();
var endTime=新日期(endDate).getTime();
var输出=[];
假日。forEach(函数(假日){
var holiday=新日期(假日).getTime();

如果(Holiday>=startTime&&Holiday解决方案是使用数组的过滤函数。第一个参数是需要过滤的数组,在您的情况下,它是['2014-01-01','2014-07-04','2014-12-24','2014-12-25']

var getHolidays = function(holiday,startDate, endDate) {
    return holiday.filter(function(element){
        var start = new Date(startDate);
        var end = new Date(endDate);
        var temp = new Date(element);
        return temp >= start && temp <= end;
    });
}

var holiday = ['2014-01-01', '2014-07-04', '2014-12-24', '2014-12-25'];
var startDate = '2014-08-01'
var endDate = '2014-12-30';
var holidays = getHolidays(holiday,startDate, endDate); //["2014-12-24", "2014-12-25"]
var getHolidays=函数(假日、开始日期、结束日期){
返回假日。过滤器(函数(元素){
var开始=新日期(开始日期);
var end=新日期(endDate);
var temp=新日期(要素);
return temp>=start&&temp作为普通字符串,getHolidays函数可以是:

// Get holidays between two dates
function getHolidays(startDate, endDate) {
  var output = [];
  var i = 0;
  var holiday;

  while ((holiday = holidays[i++]) && holiday < endDate) {
    if (startDate <= holiday) {
      output.push(holiday)
    }
  }
  return output;
}
//在两个日期之间获得假期
函数getHolidays(开始日期、结束日期){
var输出=[];
var i=0;
假期;
while((假日=假日[i++])&假日<结束日期){

如果(startDate)什么是
getHolidays()
要返回?您的问题相当模糊(实际上,您的问题是什么?)。该函数可以返回假期列表。我不知道从何处开始,所以我没有在其中放入任何内容。谢谢!请您解释一下假期变量是什么?+1我将您原始的假期日期列表放入一个名为
holidays
的数组中。与
forEach
一行的
holiday
变量是参数eter自动传入。有关更多详细信息,请参阅。请不要使用日期构造函数来解析字符串,它最多不可靠。请使用简单的解析函数。
// Parse date string in y-m-d format
function parseYMD(s) {
  var b = s.split(/\D/);
  var d = new Date();
  d.setHours(0,0,0,0);
  d.setFullYear(b[0], --b[1], b[2]);
  return d.getFullYear() == b[0] && d.getDate() == b[2]? d : NaN;
}

// Holiday array
var holidays = ['2014-01-01','2014-07-04','2014-12-24', '2014-12-25'];

// Get holidays between two dates
function getHolidays(startDate, endDate) {
  startDate = parseYMD(startDate);
  endDate   = parseYMD(endDate);
  var output = [];
  var i = 0;
  var holiday;

  for (var i=0, iLen=holidays.length; i<iLen; i++) {
    holiday = parseYMD(holidays[i]);

    if (holiday <= endDate) {
      if (holiday >= startDate) {
        output.push(holidays[i]);
      }
    }
  }
  return output; 
}

console.log(getHolidays('2014-08-01', '2014-12-30')); // ["2014-12-24", "2014-12-25"]