2013-07-24 46 views
0

我有一個日期和一個時間,我從一個CSV文件解析,$日期是一個字符串,它擁有值'18 -06-2013',和$ time string var保存值'0.00'。我需要它格式化的PHP,以便我可以插入到我的MySQL數據庫2013/06/18和06:00:00格式。我該怎麼做?現在,它插入一些零垃圾值,如日期爲0000-00-00,時間爲 00:00:06。格式化日期和時間在PHP中的SQL插入

+1

MySQL的需要YYYY-MM-DD HH:MM:其日期時間這樣做時,如2013年6月18日將不起作用ss格式。至於你如何做到這一點,你有兩種方法使用strtodate或手動爆炸的字符串和重新安排它們都將工作。 – Dave

+0

'2013-06-18'它實際上必須是 –

+1

http://php.net/explode –

回答

1

格式化時間您可以在拆分它「 - 」標記,然後加入回以相反的順序(假設你的輸入格式是DD-MM-YYYY,它似乎是)

$date = implode('-', array_reverse(explode('-', $date, 3)); 
$time = str_replace('.', ':', $time) . ':00'; 
$datetime = "$date $time"; 
+0

謝謝!我解決了類似的字符串方法。 –

0

您可以自定義時間格式傳遞給strtotime,然後用date

$time = strtotime("$date $time"); 
echo date("Y-m-d h:i:s", $time); 
+0

雖然這在技術上是正確的並且可以工作,但應該指出的是,這將會將日期/時間轉換爲UTC時間郵票又回來了,這意味着更多的開銷。如果你不需要用PHP來處理它,那麼簡單的字符串操作將比這種方法更快。 – Geoffrey

+0

我不認爲它有那麼多的開銷,它的納秒。此方法在時間和日期的上下文中處理時間和日期:-) – DevZer0

+0

這不是重點,開銷是開銷。良好的編程習慣是編寫好的快速代碼,特別是因爲你在這裏做的是1)矯枉過正,並且2)沒有考慮存儲在$ date(mm/dd或dd/mm)中的日期格式, 。如果你教育下一代程序員,他們會編寫出好的代碼,如果你不這樣做的話,期望新代碼的優化效果很差。 – Geoffrey

0

Mysql的需要在格式YYYY-MM-DD HH日期時間字段:MM:SS被正確地存儲。

這是一個測試腳本供您玩。

<?php 
    $date = '2013/06/09'; 
    $time = '06.00'; 

    list($y, $m, $d) = explode('/', $date); 
    list($hr, $mn) = explode('.', $time); 

    $db_datetime = sprintf('%d-%02d-%02d %02d:%02d:%02d', $y, $m, $d, $hr, $mn, 0); 

    echo $db_datetime; 
?> 
0

您可以使用DateTime類。從PHP 5.2.0開始,它就是PHP本地的。

實施例:

$myDate = '2013/06/18 06:00:00'; 
$myDateTime = new DateTime($myDate); 

echo $myDateTime->format('Y-m-d H:i:s');