PHP,日期操作?

Posted

技术标签:

【中文标题】PHP,日期操作?【英文标题】:Php, date manipulation? 【发布时间】:2009-06-26 04:40:16 【问题描述】:

我是 php 新手。我想知道php中的一些日期操作。

// Get Current date
$date = date("Y-m-d");

如果我想减去当前日期和特定日期,比如“今天 - 2008-06-26”,该怎么办?

    如何在 php 中进行日期数学运算(加、减、乘等)?

    如果今天,订阅者在今天日期 2009-06-26 订阅,1 周后我想从我的数据库中删除他的帐户,我该怎么做? (我用的是mysql

    如果我们将用户的日期存储在我们的数据库中,我们可以做什么?例如,我们可以存储用户的生日日期,所以在他的生日那天,我们给他发送了一些电子邮件。约会还能做什么?

【问题讨论】:

【参考方案1】:

首先,您需要了解date()time()mktime()之间的区别。

date() 仅用于显示目的。切勿将其用于数学运算。

time() 返回当前的timestampint 表示当前时间和日期)。

mktime(),不带任何参数,等同于time()。使用参数,它允许您在设定的时间内获得timestamp。参数的顺序是:时、分、秒、月、日、年。

现在,您的问题

问题 1

要进行时间操作,您可以执行以下操作:

$today = mktime(0,0,0); //Today, time neutral
$otherDate = mktime(0, 0, 0, 6, 26, 2008); //2008-06-26, time neutral

$secondsBetweenDates = $today - $otherDate;

问题 2

您最好直接在 SQL 中执行类似的操作。以下是您可以为在 PHP 中运行的两个最常见的数据库服务器执行此操作的方法。我假设DateSubscribed 是一个有效的日期数据类型。

--- MySQL
DELETE FROM `subscribers`
    WHERE NOW() < DATE_ADD(`DateSubscribed`, INTERVAL 1 WEEKS);

--- PostgreSQL
DELETE FROM "subscribers"
    WHERE CURRENT_TIMESTAMP < ("DateSubscribed" + interval '1 week');

问题 3

这取决于您的 DBMS。以下是与 MySQL 和 PostgreSQL 的日期/时间函数相关的文档页面

MySQL:11.6. Date and Time Functions PostgreSQL:9.9. Date/Time Functions and Operators

【讨论】:

【参考方案2】:

Q1:首先,将日期转换为时间戳。然后,您可以对时间戳进行数学运算,并将它们转换回日期。例如:

$num_seconds_between = strtotime('today') - strtotime('2008-06-26');
$num_days_between = $num_seconds_between / 60 / 60 / 24;

Q2:找出删除他的帐户的日期(数据库“日期/时间”格式):

date('Y-m-d H:i:s', strtotime('+1 week', strtotime('2009-06-26')));

然后您可以通过任何方式将其删除。听起来您可能想使用cron job。

Q3:几乎所有你需要它做的事情。如果您对其他能力有具体问题,请在此处发布。您可以查看PHP manual 了解更多信息。

【讨论】:

获取 mysql 日期时间格式的时间戳的最简单方法是使用 strftime('%F %T')

以上是关于PHP,日期操作?的主要内容,如果未能解决你的问题,请参考以下文章

PHP日期操作类代码-农历-阳历转换闰年计算天数等

PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)

学习PHP中的国际化日期格式化操作

PHP常用日期时间操作合集

PHP日期操作类代码-农历-阳历转换闰年计算天数等

PHP时间日期增减操作示例date strtotime实现加一天加一月等操作