转换后显示“1970-01-01”的 PHP 日期
Posted
技术标签:
【中文标题】转换后显示“1970-01-01”的 PHP 日期【英文标题】:PHP date showing '1970-01-01 ' after conversion 【发布时间】: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 page
到php
strtotime 输入错误。检查 $date1。
@AssamGuy - dd/mm/yyyy
的格式应为 dd-mm-yyyy
,因此您需要替换您的 /
字符。
【参考方案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”的 PHP 日期的主要内容,如果未能解决你的问题,请参考以下文章
php读取mysql网页显示是1970-01-01 数据库中是字符串类型,比如41036读取出为日期为2012-05-07
无法将 PHP 值转换为日期类型。预期以下类型之一:null,DateTime [关闭]
tp框架模板里的date:“Y-m-d”为何变成1970-01-01
phpcms v9中,使用TAG标签调用一个关键词相关的文章时,调用出来很多日期为1970-01-01的空文章,怎么解决