在php或javascript中查找startdate和enddate之间间隔一定天数的所有日期

在php或javascript中查找startdate和enddate之间间隔一定天数的所有日期,javascript,php,date,Javascript,Php,Date,我的任务是找到开始日期和结束日期之间的所有日期,这样生成的日期应该有一定天数的间隔 让我们将开始日期设定为2014年1月12日(MM/DD/YYYY),结束日期设定为2015年5月1日(MM/DD/YYYY)。我需要找出这些日期之间的所有日期,以便日期之间的间隔为5。即预测输出为: 2014年6月12日、2014年11月12日、2014年16月12日、2014年21月12日、2014年26月12日、2014年31月12日、2015年5月1日 谁能帮帮我吗。。提前感谢:)试试这个: $s=新日期时

我的任务是找到开始日期和结束日期之间的所有日期,这样生成的日期应该有一定天数的间隔

让我们将开始日期设定为2014年1月12日(MM/DD/YYYY),结束日期设定为2015年5月1日(MM/DD/YYYY)。我需要找出这些日期之间的所有日期,以便日期之间的间隔为5。即预测输出为:

2014年6月12日、2014年11月12日、2014年16月12日、2014年21月12日、2014年26月12日、2014年31月12日、2015年5月1日

谁能帮帮我吗。。提前感谢:)

试试这个:

$s=新日期时间('12/01/2014');
$e=新日期时间('01/05/2015');
而($s格式('m/d/Y'),“\n”;
$s->修改(“+5天”);
}

这个简单的函数应该可以做到这一点

function get_list($start_date, $end_date, $gap_days) {
    // convert dates to timestamp
    $start_timestamp = strtotime($start_date);
    $end_timestamp = strtotime($end_date);
    $gap_seconds = 24 * 3600 * $gap_days;
    // initialize the output
    $output = array();
    // find all the dates in between, and add them to the output array
    for ($timestamp=$start_timestamp+$gap_seconds; $timestamp<$end_timestamp; $timestamp+=$gap_seconds) {
        $output[] = date("m/d/Y", $timestamp);
    }
    // return the output
    return $output;
}
…输出

Array
(
    [0] => 12/06/2014
    [1] => 12/11/2014
    [2] => 12/16/2014
    [3] => 12/21/2014
    [4] => 12/26/2014
    [5] => 12/31/2014
)

可以尝试使用
strotime()
。示例:

function allDates($from,$to){
    $dates = array();
    $start_date = explode('/', $from);
    $end_date = explode('/', $to);
    $start_date = strtotime($start_date[2] . '-' . $start_date[0] . '-' . $start_date[1]);
    $end_date = strtotime($end_date[2] . '-' . $end_date[0] . '-' . $end_date[1]);

    if ($end_date >= $start_date){
        array_push($dates, date('d/m/Y', $start_date));
        while ($start_date < $end_date)
        {
            $start_date += 86400;
            array_push($dates,date('d/m/Y', $start_date));
        }
    }
    return $dates;
}

$allDates = allDates('12/01/2014', '01/05/2015');

print '<pre>';
print_r($allDates);
print '</pre>';
函数allDates($from,$to){
$dates=array();
$start_date=explode(“/”,$from);
$end_date=分解(“/”,$to);
$start_date=STROTIME($start_date[2].-'.$start_date[0].-'.$start_date[1]);
$end_date=strotime($end_date[2].-'.$end_date[0].-'.$end_date[1]);
如果($end\u date>=$start\u date){
数组推送($dates,date($d/m/Y',$start_date));
而($开始日期<$结束日期)
{
$start_date+=86400;
数组推送($dates,date($d/m/Y',$start_date));
}
}
返回$日期;
}
$allDates=allDates(“2014年1月12日”、“2015年5月1日”);
打印“”;
打印(所有日期);
打印“”;

在javascript中,您需要将字符串解析为日期,然后在较早的日期上连续添加5天,直到它超过较晚的日期,在运行时收集格式化字符串

你还没有说日期字符串是什么格式,似乎是m/d/y,这是美国和邻国所特有的

//解析m/d/y格式的日期字符串
//分隔符可以是任何非数字字符
函数parseMDY(s){
var b=s.split(/\D/);
返回新日期(b[2],--b[0],b[1]);
}
//返回格式为m/d/y的日期字符串
函数formatDateMDY(d){

函数z(n){return(n)您尝试在哪里实现这一点?您想要PHP还是javascript?对于世界上绝大多数人来说,2015年5月1日是2015年5月1日。这是您期望的日期吗?@RobG:no,2015年5月1日是美国的月/日/年格式;请参见第二个表。如果日期用
-
分隔,请参见第二个表(2015年5月1日或2015年5月1日),则此格式为天/月/年。@Glavić-分隔符不表示日期字符串的格式。您想要javascript还是PHP?@RobG:不需要,但PHP将根据格式解析日期。
01/05/2015
永远不会是
2015年5月1日
,而是
2015年1月5日
。我认为这是一个输入错误逗号应该是句点对的:echo$s->format('m/d/Y')。“\n”;但我认为是的works@johnjg12不,这不是打字错误,而是echo的有效语法
function allDates($from,$to){
    $dates = array();
    $start_date = explode('/', $from);
    $end_date = explode('/', $to);
    $start_date = strtotime($start_date[2] . '-' . $start_date[0] . '-' . $start_date[1]);
    $end_date = strtotime($end_date[2] . '-' . $end_date[0] . '-' . $end_date[1]);

    if ($end_date >= $start_date){
        array_push($dates, date('d/m/Y', $start_date));
        while ($start_date < $end_date)
        {
            $start_date += 86400;
            array_push($dates,date('d/m/Y', $start_date));
        }
    }
    return $dates;
}

$allDates = allDates('12/01/2014', '01/05/2015');

print '<pre>';
print_r($allDates);
print '</pre>';
// Parse date string in m/d/y format
// Separator can be any non–digit character
function parseMDY(s) {
  var b = s.split(/\D/);
  return new Date(b[2], --b[0], b[1]);
}

// Return a date string formatted as m/d/y
function formatDateMDY(d) {
  function z(n){return (n<10?'0':'') + n}
  return z(d.getMonth() + 1) + '/' + z(d.getDate()) + '/' + d.getFullYear();
} 

// Expects dates in m/d/y format
// End should be after start
// Returns an array of date strings
function getDates(start, end, gap) { 
  start = parseMDY(start);
  end = parseMDY(end);
  gap = Number(gap);
  var days = [];

  while (start < end) {
    days.push(formatDateMDY(start));
    start.setDate(start.getDate() + gap);
  }
  return days;
}