我有一个'n / j Y'格式的日期,想得到一个时间戳。以下代码返回1513109760,这是不正确的。这是2017年12月12日的时间戳。
$date = '12/12 2016';
echo $date. ', ' .strtotime($date);
答案 0 :(得分:3)
试试这个
$date = '12/12 2016';
$datetime = \DateTime::createFromFormat('n/j Y', $date);
$datetime->getTimestamp();
答案 1 :(得分: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');
答案 2 :(得分: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