从 '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
我有一个 '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