我使用变量从数据库中获取日期,然后我将该变量传递给strtotime函数以获得所需的格式,但它总是返回错误的日期。也许在strtotime函数中传递变量时出现问题。请问我们,我应该如何以正确的格式获得正确的日期。
这是我想要做的事情
$date = $fetch_user['date'];
$newDate = date("d-m-Y", strtotime($date));
$day = date('l', strtotime($newDate));
echo $newDate;
echo "-----";
echo $day;
exit;
答案 0 :(得分:2)
1970年1月1日是所谓的Unix时代。这是他们开始计算Unix时间的日期。如果将此日期作为返回值,则通常意味着将日期转换为Unix时间戳会返回(接近)零结果。所以日期转换不成功。很可能是因为它收到错误的输入。
换句话说,您的strtotime($date)
返回0,这意味着$ date以不受支持的strtotime函数格式传递。
因此,在调用strtotime之前,你必须自己检查$date
。
答案 1 :(得分:0)
01-01-1970意味着您可能因strtotime()
而获得0。您可能正在使用此功能无法理解的格式。 PHP文档声明:
该函数需要一个包含英文日期的字符串 格式并将尝试将该格式解析为Unix时间戳( 自1970年1月1日00:00:00 UTC以来的秒数,相对于 现在给出的时间戳,或者现在没有提供当前时间。
所以它不是很灵活。您可能想尝试DateTime::createFromFormat
。看看它是documentation。
基本上,您必须指定日期字符串的格式,您也可以将其作为输入。这样你就可以使用你想要的任何日期格式。
来自php.net的例子:
<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');