【问题标题】:PHP Incrementing date with day namePHP以日期名称递增日期
【发布时间】:2015-05-01 14:24:55
【问题描述】:

我目前正在尝试使用以下格式从当前日期获取日期列表,以便我可以对其进行处理并将其粘贴到我的数据库中
星期六/02-05-2015

到目前为止,我已经设法让系统正确输出日期,但无法让它以单日值递增。 我当前尝试增加它的代码如下

$tempStartDateN = ("$splode[0]/$splode[1]/$splode[2]/$splode[3]");  
echo $tempStartDateN;  
$tempStartDateN = date('l/d/m/Y', strtotime($tempStartDateN . ' + 1 day'));  
echo $tempStartDateN;  

我目前正在使用explode处理增量后的数据,效果很好,但只要包含日期名称,就无法使日期本身增加。

目前使用这段代码获取时间,使用explode进行后续处理

$OldDateArray = date("Y/m/d/l");  

因此,为了让一个长问题简短,增加需要日期名称、日期、月份和年份的日期的最佳方法是什么?

编辑:
这是我当前的代码,多亏了 SamV 才能做到这一点

$date = date("l/d/m/Y");
echo $date;
echo ('</br>');
list($weekdayName, $dateString) = explode("/", $date, 2);
$dateObj = new \DateTime($dateString);
for($i=0; $i<=5; $i++){
$dateObj->add(new \DateInterval("P1D")); // P1D stands for "Period 1 Day"
echo $dateObj->format("l/d/m/Y"); // Sunday/03/05/2015
echo ('</br>');
}  

然而,它的作用是:

Friday/01/05/2015
Tuesday/06/01/2015
Wednesday/07/01/2015
Thursday/08/01/2015
Friday/09/01/2015
Saturday/10/01/2015
Sunday/11/01/2015  

这意味着日期和月份正在交换,这是什么原因造成的?

【问题讨论】:

  • 请查看链接中标记的答案:-stackoverflow.com/questions/660501/…。相应地更改格式(日期)以获得正确的结果(您想要的结果)。
  • 这个问题很让人困惑,但答案可能涉及到使用 DateTime 对象,以及 MySQL 中的 datetime 类型。你可能会让自己变得更难。

标签: php date


【解决方案1】:

您无需解析工作日名称即可将日期添加到日期。

$date = "Saturday/02-05-2015";

list($weekdayName, $dateString) = explode("/", $date, 2); // Parse "02-05-2015"

$dateObj = new \DateTime($dateString);

$dateObj->add(new \DateInterval("P1D")); // P1D stands for "Period 1 Day"

echo $dateObj->format("l/d/m/Y"); // Sunday/03/05/2015

我使用了DateTime 类,这里是documentation

我写了您自己尝试做的事情,不确定是什么导致了您的问题。这段代码虽然有效。

$date = "Friday/01-05-2015";

list($weekdayName, $dateString) = explode("/", $date, 2); // Parse "01-05-2015"

$dateObj = new \DateTime($dateString);

for($i = 0; $i < 5; $i++) {
    $dateObj->add(new \DateInterval("P1D")); // P1D stands for "Period 1 Day"
    echo $dateObj->format("l/d/m/Y") . '<br>';
}

输出:

Saturday/02/05/2015
Sunday/03/05/2015
Monday/04/05/2015
Tuesday/05/05/2015
Wednesday/06/05/2015

【讨论】:

  • 好吧,我认为它效果很好,格式有问题,已添加到主要问题中
【解决方案2】:

如果strtotime 能够解析日期,它会返回时间戳。为什么不增加一天的秒数呢?嗯。喜欢$timestamp += 24 * 3600;

附:据我了解,strtotime 可以接受时间戳作为第二个参数 (http://us2.php.net/manual/en/function.strtotime.php) 之类的。喜欢$timestamp = strtotime('+1 day', $timestamp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2014-09-19
    相关资源
    最近更新 更多