PHP strtotime returns a 1970 date when date column is null

后端 未结 4 2017
我在风中等你
我在风中等你 2020-12-03 15:04

I want to display $row->depositdate in dd-mm-yyyy format.

If the date column in database is null the date displayed is : 01-01-1970

         


        
相关标签:
4条回答
  • 2020-12-03 15:31

    Oh! I know why this happens? Simply you have not included "depositdate" in your SELECT query. Firstly Change SQL query to select all with wild card sign as shown here

    $sql = "SELECT * FROM `yourtable`";
    
    0 讨论(0)
  • 2020-12-03 15:32

    NULL is converted to 0 - the epoch (1-1-1970)

    Do this instead

    echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";
    
    0 讨论(0)
  • 2020-12-03 15:37

    You need to check if $row->depositdata is_null previously or check for 0 after strtotime if the value of $row->depositdata is unrecognizable for strtotime.

      echo "<td align=center>";
      if (!is_null($row->depositdate))
      {
         $jUnixDate = strtotime($row->depositdate));
         if ($jUnixDate > 0)
         {
              echo date('d-m-Y', $jUnixDate);
         }
      }
      echo "</td>";
    

    strtotime expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC), relative to the timestamp given in now, or the current time if now is not supplied.

    more about unixtime and Y2K38 problem: http://en.wikipedia.org/wiki/Year_2038_problem

    0 讨论(0)
  • 2020-12-03 15:38

    NULL is interpreted as 0 by strtotime, since it want to be passed an integer timestamp. A timestamp of 0 means 1-1-1970.

    So you'll have to check for yourself if $row->depositdate === NULL, and if so, don't call strtotime at all.

    0 讨论(0)
提交回复
热议问题