PHP UNIX TIME STAMP


PHP UNIX TIME STAMP

我有一个日期日历在我的php形式,给我日期'19-05-2014'。我应该准确地将此日期与数据库时间修改(1400481271)进行比较。

将'19-05-2014'转换为UNIX时间戳,但我得到的结果是1397858400,这是一个错误的时间戳。

            id   userid      timemodified
            370     23          1400481271  
            329     24          1427771915
            333     30          1428309816
            332     32          1428303307
            327     33          1427689703
            328     34          1427710711
   <?php 
     if ( preg_match('/^(?P<day>'d+)[-'/](?P<month>'d+)[-'/](?P<year>'d+)$/', '19-05-2014', $matches) )
     {
       $timestamp = mktime(0, 0, 0, ( $matches['month'] - 1 ), $matches['day'], $matches['year']);
       echo $timestamp;
 }
?> 

您尝试匹配的日期为,转换为时间戳:

1400457600

如果你得到一个不同的值,你转换错了(可能是切换了日期和月份或类似的东西)。

虽然接近,但仍然与数据库中的给定值1400481271不相同。如果将其转换回可读日期,原因就很清楚了:

05/19/2014 @ 6:34am (UTC) 1400481271

为比较,给定日期:

05/19/2014 @ 12:00am (UTC) 1400457600

正如你所看到的,这是不同的,因为它是相同的日期,但不同的时间。

最简单的方法是从数据库中只检索日期部分。

您可以在SQL查询中这样做:

SELECT DATE( FROM_UNIXTIME( timemodified ) ) AS modified

这将返回2014-05-19,您可以轻松地将其与字符串进行比较。

或者,如果你甚至可以用你得到它的相同格式检索它,那么你不需要用regex重写你的日期:

SELECT DATE_FORMAT( FROM_UNIXTIME( timemodified ), '%d-%m-%Y' ) AS modified

这将为1400481271返回19-05-2014