4

我正在尝试将 2010-02 转换为 2010 年 2 月。但是,我不断得到 1969 年 12 月

我尝试过使用 mktime、strtotime 以及两者的某种组合,但仍然无法做到......

这是我最近尝试的...

$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
4

2 回答 2

8

这将是一种方法:

$dateString = '2010-02';
list($year, $month) = explode('-', $dateString);
$timeStamp = mktime(0, 0, 0, $month, 1, $year);
echo date('F, Y', $timestamp);

另一种方法是:

$dateString = '2010-02';
$timestamp = strtotime($dateString . '-01');
echo date('F, Y', $timestamp);

strtotime不能处理像“2010-02”这样的模棱两可的日期,但如果你把它设为一个完整的日期,它应该可以工作。

否则,您可能需要查看类似DateTime::createFromFormat.

于 2010-02-09T02:42:53.737 回答
0

试试这个:

$str = '2010-02';
echo date('F, Y',mktime(0,0,0,substr($str,-2),1,substr($str,0,4)));

您必须确保使用有效值来mktime(). 在您编辑到问题中的示例中,您有0一天,这实际上是第一天减一,这使您进入上个月。

于 2010-02-09T02:40:10.950 回答