【问题标题】:PHP date entering as 1970PHP 日期输入为 1970
【发布时间】:2015-01-12 13:00:26
【问题描述】:

您好,我正在尝试修复另一位开发人员创建的旧代码。花了一段时间修复它以使用 mysqli。无论如何,我清单上的最后一件事是修复日期错误。 没有实际错误,但如果您提交带有有效日期的表格,表格中始终显示为01-01-1970 下面是格式化日期的一段代码。日期以DD-MM-YY 格式输入。

$arr[$i] = strftime("%Y-%m-%d", strtotime($date) );

到目前为止的结果总是01-01-1970

这里有一些尝试用相同的输出修复它:

$arr[$i] = $date;

$arr[$i] = strtotime($date);

以及strftime 设置的许多变体!

【问题讨论】:

  • 尝试使用 DateTime 对象和createFromFormat
  • 你能给我们提供一个var_dump($date)吗?
  • @Kieranmv95 如果您尝试插入当前日期(如今天的日期),您可以在 MySQL 查询中简单地使用 NOW() ,它会处理它为您服务,如果它是未来或过去的日期,那么您将不得不为 MySQL 格式化它,将其作为 YEAR-MONTH-DAY 例如 2015-01-12
  • 这可能需要前几天我并不总是now()(我希望是这样)。我现在要尝试转储,我已经检查了数据库,它肯定是一个 DATETIME 格式字段
  • @Dencker 它正在返回null,所以我将尝试找到“应该”为其分配日期的代码

标签: php mysql validation date


【解决方案1】:

你考虑过使用 date() 吗?

string date ( string $format [, int $timestamp = time() ] )

http://php.net/manual/en/function.date.php

所以...

$arr[$i] = strftime("%Y-%m-%d", strtotime($date) );

变成

 $arr[$i] = date("Y-m-d", strtotime($date) );

【讨论】:

  • 同样的问题
  • 你能试试 var_dump($arr[$i]) 看看它是什么吗?还要检查列的字段类型,如果您使用的是 MySql,它应该是 DateTime
【解决方案2】:

尝试使用 DateTime 对象和createFromFormat,这样您就可以明确定义$date 值的格式

$dt = DateTime::createFromFormat('d-m-y',$date);
$arr[$i] = $dt->format("Y-m-d");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多