【发布时间】:2010-11-04 20:31:01
【问题描述】:
我需要使用 PHP 对我的 MySQL 数据库中的时间和日期值进行更复杂的计算。
我需要添加或减去给定日期的不同值。
例如:
- 减去 1 个月
- 减去 30 天
- 减去 4 周
- 增加 4 个月
- 增加 3 个月
- 增加 90 天
- 增加 2 年
请注意,减去 1 个月、4 周或 30 天是有区别的。
这样做的首选方法是什么?是否有任何聪明的库或者我可以用 PHP 自己的函数来做到这一点?
【问题讨论】:
我需要使用 PHP 对我的 MySQL 数据库中的时间和日期值进行更复杂的计算。
我需要添加或减去给定日期的不同值。
例如:
请注意,减去 1 个月、4 周或 30 天是有区别的。
这样做的首选方法是什么?是否有任何聪明的库或者我可以用 PHP 自己的函数来做到这一点?
【问题讨论】:
来自http://php.net/manual/en/function.strtotime.php
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
您可以添加第二个参数以使其添加到给定时间:
echo strtotime("+1 week",$timestamp)
【讨论】:
您可以使用 PHP5 的 DateTime 和 DateInterval 对象的组合。
$now = new DateTime();
// 30 days ago
$now->sub(new DateInterval("P30D");
// 1 week ago
$now->sub(new DateInterval("P1W");
// 2 years from now
$now->add(new DateInterval("P1Y");
区间代码列表见the manual
【讨论】:
从 PHP 5.2 开始,您有了 DateTime 对象。 你可以这样做:
$date = new DateTime; // now
$date->modify('1 month ago');
echo $date->format('Y-m-d');
检查this link 以获得完整的sintax。
【讨论】:
PHP函数strtotime在这方面非常强大。
例如:
// 1 month ago
$date = strtotime('-1 month');
// 30 days ago
$date = strototime('-30 days');
【讨论】:
<?php
$date = date_create('2000-01-01');
date_add($date, date_interval_create_from_date_string('10 days'));
echo date_format($date, 'Y-m-d');
?>
$date 现在将是“2000-01-11”。
您也可以使用date_sub 减去时间量。
更多:
http://www.php.net/manual/en/datetime.add.php http://www.php.net/manual/en/datetime.sub.php
【讨论】:
查看strtotime() 函数。 http://php.net/manual/en/function.strtotime.php
另请注意,您可以使用第二个参数来指示何时开始。
strtotime('+1 day', mktime(0, 0, 0, 7, 1, 2000));
【讨论】:
尝试梨日期库。非常强大和灵活,具有添加周期的功能。它完全符合您的要求。
我们在一个日期密集型网络应用程序中使用它,我们必须添加大量时间变量周期并计算周数等。
【讨论】:
请看这个PHP dates
【讨论】:
根据您的应用程序,您将要使用 mysql 日期时间函数
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add
或 strtotime 就像其他人所说的那样
【讨论】:
这是另一个建议。如果你想操作来自mysql的信息,请尝试使用mysql提供的日期/时间函数here
【讨论】: