所以,我试图解析一个字符串,例如。 1-5-2014,DATE类型如下:
$todayArray = date_parse_from_format("n-j-Y", $row["whenn"]);
$news_date = strtotime($todayArray['year'].'-'.$todayArray['month'].'-'.$todayArray['day']);
但它返回1399909000.看起来它是导致问题的数组,但由于我对php的知识有限,我不知道出了什么问题。
提前谢谢你,
泰勒
答案 0 :(得分:2)
$todayArray
的值应该是这样的:
Array
(
[year] => 2014
[month] => 1
[day] => 5
[hour] =>
[minute] =>
[second] =>
[fraction] =>
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] =>
)
现在是字符串
$todayArray['year'].'-'.$todayArray['month'].'-'.$todayArray['day']
即。 "2014-1-5"
是strtotime
的有效参数。但该函数将返回1393355280
,与给定日期对应的UNIX timestamp,而这不是您要获取的内容。实际上,上面的字符串已经非常类似于您想要的输出。唯一的问题是$todayArray['month']
和$todayArray['day']
的值需要在左侧填零。使用sprintf
:
$news_date = $todayArray['year'].'-'.sprintf("%02d", $todayArray['month']).'-'.sprintf("%02d", $todayArray['day']);
现在$news_date
的值为"2014-01-05"
。
答案 1 :(得分:1)
您不想使用strtotime()
,因为它只会将您的日期转换为Unix时间戳。使用DateTime()
也比使用date_parse_from_format()
更简单:
$date = DateTime::createFromFormat("n-j-Y", $row["whenn"]);
echo $date->format('Y-m-d');