2010-02-18 102 views
0

我有幾個文本框,允許一個人輸入時間和日期。時間與文本框輸入幾個小時,一個文本框的分鐘,一個下拉的上午/下午和一些下拉數月/小時/年使用am/pm創建php時間戳

所以,我想結合所有這些創建一個時間戳記並將其保存到數據庫中。

但我很困惑自己在如何做所有創建一個適當的時間戳,特別是AM/PM部分。

+0

什麼樣的時間戳? UNIX時間,MySQL時間戳? – Matchu 2010-02-18 21:28:47

回答

3

這聽起來像你只是使用mktime()。通過爲pm添加12來獲取正確的小時數,然後將參數傳遞給函數。

if($is_pm) $hour += 12; 
$time = mktime($hour, $minute, $second, $month, $day, $year); 

如果你正在尋找一個MySQL的時間戳,而不是一個UNIX時間戳,你有兩個選擇:

  1. 使用date()建立在MySQL的格式時間戳:date('Y-m-d H:i:s', $time);
  2. 讓MySQL的做對你來說:UPDATE table SET date = FROM_UNIXTIME($time) WHERE foo='bar'

或者你可以將整數時間戳記存儲在數據庫中作爲一個整數。

+0

哦,我的那很容易。我甚至不認爲這很愚蠢。謝謝! – Andelas 2010-02-18 21:33:35

2

strtotime會做到這一點:

$timestamp = strtotime("$year-$month-$day $hours:$minutes $am_pm"); 

只要確保零墊$一個月,$日,$小時,$分鐘。

+0

但我期望mktime比分析字符串會有更好的性能。 – Matchu 2010-02-18 21:35:38

+0

你可能是對的,但是我對AM/PM的處理更簡單一些,但是我的表現略遜一籌。 – abeger 2010-02-18 21:57:56

1

假設你已經檢查了有效輸入,您可以使用mktime()功能。如果選擇PM,只需在小時內加12。這會給你一個Unix時間戳。您可以將該結果傳遞至date()以根據需要格式化日期。