strtotime()在php中总是返回01-01-1970

时间:2014-02-11 07:24:55

标签: php

我使用变量从数据库中获取日期,然后我将该变量传递给strtotime函数以获得所需的格式,但它总是返回错误的日期。也许在strtotime函数中传递变量时出现问题。请问我们,我应该如何以正确的格式获得正确的日期。

这是我想要做的事情

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

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

2 个答案:

答案 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');