2013-04-10 65 views
0

来自URL的日期和时间格式应为YYYY-MM-DD-HH-II-SS。我想检查它的正确性,并将其插入到mysql时间戳格式的列中的数据库中。从url检查日期时间

1)与$timestamp = $this->input->get('time_from')我从url收到它。

2)在插入数据库之前,我尝试打印它。

if (! empty($timestamp)) { 
     $timestamp = date_create_from_format('Y-m-d-H-i-s', $timestamp); 
     if (! $timestamp) 
      echo date_format($timestamp, 'Y-m-d H:i:s'); 
    } 

3)我得到那年可能在1970年之前,例如1950-01-01-10-32-01是正确的通过这种检查。但是在mysql列中插入这样的日期是不可能的。 4)我得到2012-02-31-10-00-00在2012-03-02 10:00:00自动转换。

问题是:如何避免这些令人困惑的自动转换?提供这种检查的最佳方法是什么?

回答

1

您无法在1970年之前的某个MySQL TIMESTAMP列中存储日期。改用DATETIME。 http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

您可以使用checkdate()函数查看日期是否有效。

+0

我不需要1970年之前的日期。我继续使用TIMESTAMP。 checkdate函数也不会给出检查是否满足mysql时间戳要求的可能性。 – Anton 2013-04-10 19:39:30

+0

如果你看看我给你链接到的MySQL文档,你可以看到Timestamp类型允许的日期范围,并检查这些日期范围。你可以使用日军看看日期是否有效 - 如果不是,它将会像你在#4中描述的那样“变形”。 – 2013-04-11 03:51:37