php中的日期问题

php中的日期问题,php,mysql,Php,Mysql,在我的php应用程序中,我有以下代码: <?php echo date("d/m/ Y ",strtotime($row["m_date"]));?> 其中,$row[“m_date”]正在从数据库中提取数据 问题是除了2011年2月27日之外,所有日期都打印得很好。它正在打印1/1/1970 数据库中的日期很好,并以PDF格式正确打印。如果将日期存储在数据库中作为时间戳,则应该可以使用 <?php echo date("d/m/Y",$row["m_date"]);?&

在我的php应用程序中,我有以下代码:

<?php echo date("d/m/ Y ",strtotime($row["m_date"]));?>

其中,
$row[“m_date”]
正在从数据库中提取数据

问题是除了2011年2月27日之外,所有日期都打印得很好。它正在打印
1/1/1970


数据库中的日期很好,并以PDF格式正确打印。

如果将日期存储在数据库中作为时间戳,则应该可以使用

<?php echo date("d/m/Y",$row["m_date"]);?>
<?php echo date("d/m/Y",strtotime($row["m_date"]));?>


如果您将日期存储在数据库中作为日期或日期时间,则应该可以使用

<?php echo date("d/m/Y",$row["m_date"]);?>
<?php echo date("d/m/Y",strtotime($row["m_date"]));?>

如果您将日期作为时间戳存储在数据库中,则应该可以使用

<?php echo date("d/m/Y",$row["m_date"]);?>
<?php echo date("d/m/Y",strtotime($row["m_date"]));?>


如果您将日期存储在数据库中作为日期或日期时间,则应该可以使用

<?php echo date("d/m/Y",$row["m_date"]);?>
<?php echo date("d/m/Y",strtotime($row["m_date"]));?>

m_日期如何存储在数据库中?它是datetime对象吗?或者一根绳子。 strotime的问题在于,它并不擅长破译书面日期。因此,类似于2011年2月27日的
27
会出现问题,而2011年2月27日的
27
则不会出现任何问题

因此有两种解决方案:

  • 确保输入数据库的所有日期的格式正确(
    dd/mm/yyyy
  • 编写一个正则表达式,将前导零添加到所有单个字符
    m_日期如何存储在数据库中?它是datetime对象吗?或者一根绳子。 strotime的问题在于,它并不擅长破译书面日期。因此,类似于2011年2月27日的
    27
    会出现问题,而2011年2月27日的
    27
    则不会出现任何问题

    因此有两种解决方案:

  • 确保输入数据库的所有日期的格式正确(
    dd/mm/yyyy
  • 编写一个正则表达式,将前导零添加到所有单个字符
    我假设您从数据库中获取的日期是字符串
    27/2/2011
    ,因为这很可能就是发生的情况(如果我错了,请纠正我)

    PHP将字符串
    27/2/2011
    视为
    m/d/Y
    格式,而不是
    d/m/Y
    ,并尝试在该假设下进行解析。因为该格式下的日期无效
    strotime
    返回
    false
    。将
    false
    作为
    date
    的时间戳参数取为
    0
    ,这是1970年1月1日的时间戳

    您需要做的是从数据库中获取另一种格式的日期(或者更好的是,作为时间戳),或者自己解析它(比如使用
    explode

    祝你好运,

    Alin

    我假设您从数据库中获取的日期是字符串
    27/2/2011
    ,因为这很可能就是发生的情况(如果我错了,请纠正我)

    PHP将字符串
    27/2/2011
    视为
    m/d/Y
    格式,而不是
    d/m/Y
    ,并尝试在该假设下进行解析。因为该格式下的日期无效
    strotime
    返回
    false
    。将
    false
    作为
    date
    的时间戳参数取为
    0
    ,这是1970年1月1日的时间戳

    您需要做的是从数据库中获取另一种格式的日期(或者更好的是,作为时间戳),或者自己解析它(比如使用
    explode

    祝你好运,

    Alin

    数据库应该能够将日期作为UNIX时间戳返回给您。例如,MySQL具有UNIX_TIMESTAMP()函数

    SELECT UNIX_TIMESTAMP(date_column) FROM table;
    
    博士后有日期部分

    SELECT DATE_PART('epoch', date_column) FROM table;
    
    大多数其他数据库应该具有类似的功能。如果可以将日期作为UNIX时间戳输出,则可以将其直接传递到date(),而不必使用strotime()


    当然,所有这些都假设您正在为相关列使用时态数据类型(timestamp、datetime、timestamp with time zone等),而不仅仅是存储字符串。您使用的是时态类型,对吗?如果没有,那么为什么不呢?

    数据库应该能够将日期作为UNIX时间戳返回给您。例如,MySQL具有UNIX_TIMESTAMP()函数

    SELECT UNIX_TIMESTAMP(date_column) FROM table;
    
    博士后有日期部分

    SELECT DATE_PART('epoch', date_column) FROM table;
    
    大多数其他数据库应该具有类似的功能。如果可以将日期作为UNIX时间戳输出,则可以将其直接传递到date(),而不必使用strotime()


    当然,所有这些都假设您正在为相关列使用时态数据类型(timestamp、datetime、timestamp with time zone等),而不仅仅是存储字符串。您使用的是时态类型,对吗?如果没有,那么为什么不呢?

    请向我们展示代码和生成的html或文本等。您的数据库字段结构是什么?您是否将日期存储在数据库中作为时间戳或日期时间?请执行
    $row[“m_date”]的
    var_dump
    并告诉我们您得到了什么。请向我们显示代码和生成的html或文本等。您的数据库字段结构是什么?您是否将日期存储在数据库中作为时间戳或日期时间?请对
    $row[“m_date”]
    执行
    var_dump
    并告诉我们您得到了什么。