2013-07-11 30 views
1

我有個約會'07/23/2009'和時間'18:11',我想獲得一個時間戳的那樣: 這裏是我的例子:如何在PHP中將日期和時間轉換爲時間戳?

date_default_timezone_set('UTC'); 

$d = str_replace('/', ', ', '07/23/2009'); 
$t = str_replace(':', ', ', '18:11'); 
$date = $t.', 0, '.$d; 
echo $date; 
echo '<br>'; 
echo $x = mktime("$date"); 

的問題是,$x給我當前的時間戳。

有什麼想法?

回答

5

提示錯誤,因爲mktime函數只需要號碼的所有值和這個功能只給出日期。如果你嘗試像

$h = 18; 
$i = 11; 
$s = 00; 
$m = 07; 
$d =23; 
$y = 2009; 
echo date("h-i-s-M-d-Y",mktime($h,$i,$s,$m,$d,$y)); 

然後它會工作。

讓你完整的代碼將

date_default_timezone_set('UTC'); 

$d = str_replace('/', ',', '07/23/2009'); 
$t = str_replace(':', ',', '18:11'); 
$date = $t.',0,'.$d; 
$fulldate = explode(',',$date); 
echo '<br>'; 
$h = $fulldate[0]; 
$i = $fulldate[1]; 
$s = $fulldate[2]; 
$m = $fulldate[3]; 
$d =$fulldate[4]; 
$y = $fulldate[5]; 

echo date("h-i-s-M-d-Y",mktime($h,$i,$s,$m,$d,$y)) . "<br>"; 

//如果你想時間戳 然後用

echo strtotime("07/23/2009 18:11"); 

感謝

1

嘗試使用的strtotime

$x = strtotime($date." ".$time); 

您的情況下,你的代碼應該是

date_default_timezone_set('UTC'); 
$x = strtotime("07/23/2009 18:11"); 
echo $x; 
+0

似乎工作,我只是得到了一些奇怪的結果。謝謝 – Patrioticcow

+0

這可能會導致'07/06/2009 18:11'的日期問題 - 是7月7日*還是6月6日*?。原因並非每個人(事實上只有少數國家/地區)在日期中使用MM/DD/YYYY格式,大多數情況下使用DD/MM/YYYY。總是最好以YYYY-MM-DD格式存儲你的日期。 – Tigger

+1

strtotime解釋它的方式(至少在我的語言環境中)是,如果您使用'/'作爲分隔符,那麼它是m/d/y,如果您使用'.',則是dmy,如果您使用'-'是ymd。但我同意Y-m-d是首選(iso 8601) – Orangepill

1
<?php 

//current time zone to UTC 
$date = new DateTime($datetime, new DateTimeZone(date_default_timezone_get())); 

//set the time zone as UTC 
$date->setTimezone(new DateTimeZone('UTC')); 

//convert local time to UTC time 
$date=$date->format("Y-M-D"); 

echo $date; 

//-------------------------------------------------------------------- 

//UTC to some other time zone format 

$date = new DateTime($datetime, new DateTimeZone("UTC")); 

//set the time zone as UTC 
$date->setTimezone(new DateTimeZone(date_default_timezone_get())); 

//convert local time to UTC time 
$date=$date->format("Y-M-D"); 

echo $date; 
2

使用DateTime類: -

$dateStr = '07/23/2009'; 
$timeStr = '18:11'; 
list($hours, $minutes) = explode(':', $timeStr); 

$dateTime = \DateTime::createFromFormat('m/d/Y', $dateStr)->setTime($hours, $minutes); 
$timeStamp = $dateTime->getTimestamp(); 

或: -

$dateStr = '07/23/2009 18:11'; 
$timestamp = \DateTime::createFromFormat('m/d/Y H:i', $dateStr)->getTimestamp();