从 'n/j Y' 日期 PHP 获取 Unix 时间戳

Get Unix timestamp from 'n/j Y' date PHP

我有一个 'n/j Y' 格式的日期,想要获取时间戳。下面的代码 returns 1513109760,这是不正确的。这是 2017 年 12 月 12 日的时间戳。

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

试试这个

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

您必须以 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');

另一种可能的选择是使用正则表达式提取日期组件,然后使用 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