2017-03-21 85 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;