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

时间:2017-03-21 23:52:56

标签: php date unix-timestamp

我有一个'n / j Y'格式的日期,想得到一个时间戳。以下代码返回1513109760,这是不正确的。这是2017年12月12日的时间戳。

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

3 个答案:

答案 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
相关问题