8

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

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

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

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

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

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

4

2 回答 2

13

首先,您需要了解 、 和 之间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 的日期/时间函数相关的文档页面

于 2009-06-26T05:01:44.020 回答
3

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 作业

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

于 2009-06-26T04:54:02.550 回答