2017-03-21 116 views
0

我有'n/j Y'格式的日期,並希望獲得時間戳。以下代碼返回1513109760,這是不正確的。這對2017年的12/12從'n/j Y'日期獲取Unix時間戳PHP

$date = '12/12 2016'; 
echo $date. ', ' .strtotime($date); 

回答

3

時間戳試試這個

$date = '12/12 2016'; 
$datetime = \DateTime::createFromFormat('n/j Y', $date); 
$datetime->getTimestamp(); 
0

您必須提交日期爲strtotime它可以理解的格式。所以要麼像這樣修改格式。

如果日月份和年份之間用/分開,那麼假定美國的日期格式,即MM/DD/YYYYY。

如果它們由-那麼歐洲格式分隔的假定,即DD-MM-YYYYY

$date = '12/12 2016'; 
$fixed = str_replace(array(' ', '/'), '-', $date); 
echo strtotime($fixed); 
echo PHP_EOL; 
echo date('d/m/Y',strtotime($fixed)); 

另外也可以使用DateTime對象

$date = '12/12 2016'; 
$dt = \DateTime::createFromFormat('n/j Y', $date); 
echo $dt->getTimestamp(); 
echo PHP_EOL; 
echo $dt->format('d/m/Y'); 
0

另一個可能的選擇是使用常規表達式來提取日期組件,然後使用mktime()創建時間戳。

$date = '12/12 2016'; 

preg_match_all('/([0-9]+)/', $date, $dateParts); 

$timestamp = mktime(0,0,0, $dateParts[0][0], $dateParts[0][1], $dateParts[0][2]); 

echo $timestamp; 

結果:

1481500800 
0

這很適合我。

$date = '12-12-2016'; 
echo date('m-d-Y', strtotime($date)); 

echo "<br><br>"; 

$date1 = strtotime($date); 
$date1 = date('m-d-Y', $date1); 
echo $date;