Php,日期操纵?

jin*_*y99 8 php date date-math

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

// Get Current date
$date = date("Y-m-d");
Run Code Online (Sandbox Code Playgroud)

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

  1. 如何在PHP中进行日期数学操作(添加,减号,多重等)?

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

  3. 如果我们将用户的日期存储在我们的数据库中,我们该怎么办?例如,我们可以存储用户的bday日期,所以在他的bday日,我们给他发了一些电子邮件.还有什么可以约会?

And*_*ore 13

首先,你需要了解的区别date(),time()mktime().

date()仅用于显示目的.切勿将其用于数学操作.

time()返回当前timestamp(int表示当前时间和日期).

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;
Run Code Online (Sandbox Code Playgroud)

问题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');
Run Code Online (Sandbox Code Playgroud)

问题3

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