【问题标题】:PHP date showing '1970-01-01 ' after conversion转换后显示“1970-01-01”的 PHP 日期
【发布时间】:2012-02-17 13:37:22
【问题描述】:

我有一个日期格式为 dd/mm/yyyy 的表格。为了搜索数据库,我将日期格式转换为 yyyy-mm-dd 。但是当我 echo 它时,它显示 1970-01-01 。 PHP代码如下:

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

为什么会这样?如何将其格式化为yyyy-mm-dd

【问题讨论】:

  • 因为它的 0000-00-00 在你的数据库中
  • 不是来自数据库,而是来自我的html pagephp
  • strtotime 输入错误。检查 $date1。
  • @AssamGuy - dd/mm/yyyy 的格式应为 dd-mm-yyyy,因此您需要替换您的 / 字符。

标签: php mysql date strtotime


【解决方案1】:

/ 替换为-

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

【讨论】:

  • 简单有效的@Cyclone!
  • 我在将两个英国日期转换为 MySQL 格式时遇到了这个问题。非常感激你的帮助。像梦一样工作!
  • 我也这样做,但问题仍然是你能帮助@Cyclonecode
  • @ankitsuthar - 很难在没有看到您尝试格式化的日期的情况下给出解决方案。在使用strtotime()之前尝试从字符串中删除任何空格?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    终于找到了解决这个问题的一行代码

    date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));
    

    【讨论】:

    • 这是什么答案,你从别人那里挑代码放在一行上?你听说过代码可读性吗?
    【解决方案4】:

    在 php 5.3+ 中使用以下代码:

    $date = new DateTime('1900-02-15');
    echo $date->format('Y-m-d');
    

    在 php 5.2 中使用以下代码:

    $date = new DateTime('1900-02-15');
    echo $date->format('Y-m-d');
    

    【讨论】:

    • 我看不出这两者有什么区别
    【解决方案5】:
    $date1 = $_REQUEST['date'];
    
    if($date1) {
        $date1 = date( 'Y-m-d', strtotime($date1));
    } else {
        $date1 = '';
    }
    

    $date 中存在有效的date() 时,这将正确显示,否则不显示。
    为我解决了这个问题。

    【讨论】:

      【解决方案6】:
      $inputDate = '07/05/-0001';
      $dateStrVal = strtotime($inputDate);
      if(empty($dateStrVal))
      {
        echo 'Given date is wrong'; 
      }
      else{
       echo 'Date is correct';
      }
      

      O/P : 给定日期错误

      【讨论】:

        【解决方案7】:

        另一种解决方法:

        将日期选择器dd/mm/yyyy 转换为yyyy-mm-dd

        $startDate = trim($_POST['startDate']);
        $startDateArray = explode('/',$startDate);
        $mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
        $startDate = $mysqlStartDate;
        

        【讨论】:

          【解决方案8】:

          问题是当您的数据设置为 000-00-00 或为空时,您必须仔细检查并提供正确的信息,此问题就会消失。我希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-09-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-06
            相关资源
            最近更新 更多