0

我需要生成当天之后 10 个开放日列表的 html 代码,开放日是指工作日(m、t、w、t 和 f),我正在使用以下函数将日期转换为法语:

function f_date() {
    $temps = time();
    $jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    $jours_numero = date('w', $temps);
    $jours_complet = $jours[$jours_numero];
    $NumeroDuJour = date('d', $temps);
    $mois = array(' ', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
    $mois_numero = date("n", $temps);
    $mois_complet = $mois[$mois_numero];
    $an = date('Y', $temps);
    $fr_temps = "$jours_complet, $NumeroDuJour $mois_complet $an";
    return "$fr_temps";
}
echo "<br/>".f_date();

我想生成以下结果:

<select name="ladate">
    <option selected="selected" value="Mardi, 29 mai 2012">29 mai 2012</option>
    <option value="Mercredi, 30 mai 2012">30 mai 2012</option></select>
    ....
    <option value="Vendredi, 15 juin 2012">15 juin 2012</option></select>
</select>

如果您需要更多信息,请告诉我。

谢谢你。

4

2 回答 2

2

由于您只是在寻找 MTWTF 并且您想要接下来的 10 天,因此您始终可以安全地寻找接下来的 14 天而忽略周末,这将给 10 天。它不适用于假期或类似的情况,但如果需要,您可以更改它。我这里给你伪代码,我把所有的数组映射和文本输出留给你

for ($days_to_add : 1 to 14) {
    $new_date = date_add($days_to_add);

    // check the day of the week
    if (date('N', $new_date) >= 6) {
        // ignore it, it's a weekend
        continue;
    }

    // output the option tag for $new_date
    echo "<option ... </option>"
}

这依赖于 10 天和 14 天的假设,如果您想更改该数字,您可以添加某种计数器,并且仅在您查看工作日/非节假日时才增加计数器

于 2012-05-29T20:15:33.663 回答
0

只需创建一个循环,将天数增加到十天并忽略所有非开放日(周六、周日)。date('N')是您的朋友来检测给定日期的工作日。

<?php
$i = $openDay = 0;
while($openDay < 10) {
  $i++;
  $time = strtotime('+'.$i.' days');
  $day = date('N', $time);

  if ($day == 6 or $day == 7) { // ignore Saturdays and Sundays
    continue;
  }

  echo f_date($time).'<br>';
  $openDay++;
}

您还必须修改date_f()函数以$temps用作参数。

<?php
function f_date($temps = null) {
  // $temps = time();
  // ...
}
于 2012-05-29T20:24:45.670 回答