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()
返回当前的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;
问题 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,日期操作?的主要内容,如果未能解决你的问题,请参考以下文章