2014-02-11 47 views
2

我使用一个变量从数据库中获取日期,然后我通过该变量传递给strtotime函数来获得所需的格式,但它总是返回错误的日期。也许有一个传递变量的时间函数的问题。请告诉我们,我应该如何以正确的格式得到正确的日期。strtotime()在PHP返回总是01-01-1970

这里就是我试图做

$date = $fetch_user['date']; 
$newDate = date("d-m-Y", strtotime($date)); 
$day = date('l', strtotime($newDate)); 

echo $newDate; 
echo "-----"; 
echo $day; 
exit; 
+0

你是什么$ fetch_user [ '日期'] –

+0

的PHP版本,你usiing? – krishna

+0

你可以发布$ date的价值吗? –

回答

2

1970年1月1日,是所谓的Unix纪元。这是他们开始计算Unix时间的日期。如果将此日期作为返回值,通常意味着将日期转换为Unix时间戳返回(接近)零结果。所以日期转换不成功。很可能是因为它收到错误的输入。

换句话说,您的strtotime($date)返回0,这意味着$ date以strtotime函数的不受支持的格式传递。

所以你必须检查自己$date,在打电话strtotime。

+0

$ date返回一个1970年1月1日以外的有效日期,但它仍然是它的不工作。当我使用日期作为一个字符串,其工作正常。 – HimanshuSamantaray

0

01-01-1970表示您可能因strtotime()而得到0。您可能正在使用这种功能无法理解的格式。 PHP的文档指出:

函数需要接受一个包含英语日期 格式的字符串,并会尝试解析格式为Unix时间戳(自1月1日 秒数1970年00:00: 00 UTC),相对于现在给出的 时间戳,或者当前时间(如果现在没有提供)。

所以它不是很灵活。您可能想尝试使用DateTime::createFromFormat。看看它的documentation

基本上,你必须指定日期字符串的格式,也作为输入。这样你可以使用任何你想要的日期格式。从php.net

例子:

<?php 
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');