2013-04-10 60 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