繁体   English   中英

处理日期

[英]Dealing with Dates

这是我需要做的:

  1. 我想在从当前日期起 30 天后的日期时间 MySQL 字段中插入一个日期
  2. 当我提取该特定记录时,我希望能够检查该日期是否已经过去(即到期日期)
INSERT INTO the_table
   (fields, the_date_field)
VALUES
   (?, DATE_ADD(NOW(), INTERVAL 30 DAY))

SELECT
   the_date_field < NOW() AS expired
FROM
   the_table

确认:

SELECT '2010-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
|       1 |
+---------+

SELECT '2012-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
|       0 |
+---------+

对于您的插入:

$thirty_days_from_today = date('Y-m-d H:i:s', time() + 60*60*24*30);

检查到期日期:

if(strtotime($row['expiration_date']) < time()) {
    // expired
}

Strtotime 是您在这方面的朋友,既可以确保您通过数据发送的输入对于 PHP 而言是“可理解的”,也可以用于进行数学运算,例如“+10 天”,这将返回从今天起十天后的日期。 你可以在 strtotime 抛出的东西真的很神奇。

在 MySQL 查询或 PHP 与运算符比较中检查日期非常简单——比如 >、< <> 等。

由于您使用的是 PHP,因此您可以使用strtotime()

$date = date( 'Y-m-d', strtotime( '+30 days' ) );

strtotime可以处理其他增量( +1 days+5 minutes等)

您还可以使用strtotime比较从数据库中读取日期的日期。 如果您以全天(无时间戳)格式存储,则需要除以一整天的秒数。

$expdate = strtotime( date( 'Y-m-d', $record[ 'expiration_date' ] ) );
$today = strtotime( date( 'Y-m-d' ) );
$isExpired = round( abs( $expiration - $today ) / ( 24 * 60 * 60 ) ) >= 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM