【问题标题】:How can i take sql current timestamp and output as php date()? [duplicate]我如何将 sql 当前时间戳和输出作为 php date()? [复制]
【发布时间】:2012-08-11 02:41:48
【问题描述】:

可能重复:
Formating an SQL timestamp with PHP

我的 SQL 表中有一个具有默认当前时间戳值的列。我正在尝试使用date() 以更易读的格式输出它。

但是,无论我使用哪种格式,我总是得到相同的日期:1970-01-01 00:33:32

这是来自数据库的当前时间戳的示例值:2012-08-09 06:37:58

下面是我用来尝试将其“转换”为可读格式的代码:

$value['current_date']// is the var from the database.(containing 2012-08-09 06:37:58)
$somevar = date('Y-m-d H:i:s', $value['current_date']);

提前致谢。

【问题讨论】:

  • 感谢所有提供帮助的人。

标签: php sql timestamp


【解决方案1】:

您的问题是您在第二个参数中使用了错误的值。 date() function 期望 UNIX 样式的时间戳作为第二个参数,而不是日期的字符串表示形式。使用strtotime() function 更正此问题:

$somevar = date('Y-m-d H:i:s', strtotime($value['current_date']));

但是,正如其他人指出的那样,您为什么要费心进行这种格式化?您想要的格式样式已经在数据库中。它应该很简单:

echo $value['current_date'];

【讨论】:

  • Jonah 感谢您的帮助,TIMESTEMP - current timestemp 作为默认值不使用 UNIX 样式吗?
  • TIMESTAMP 是 MySQL 类型;它(本质上)与 PHP 中存在的类型无关。 strtotime 函数会将 TIMESTAMP 值(本质上是一个字符串)转换为等效的 UNIX 时间戳(整数)。
  • 乔纳,你的想法似乎奏效了
  • 太棒了!我很高兴能帮上忙。请记住将答案标记为已接受,以帮助将来偶然发现此问题的其他人。
  • 不会忘记。再次感谢
【解决方案2】:

您遇到的问题是因为date() 的第二个参数应该是时间戳,并且由于您传递的是包含2012-08-09 06:37:58 的原始字符串,因此php 不知道该怎么做。

修改您的代码如下,它应该可以工作:

$somevar = date('Y-m-d H:i:s', strtotime($value['current_date']));

您现在可以根据需要使用任何日期格式代替'Y-m-d H:i:s'

【讨论】:

    【解决方案3】:

    首先:如果时间戳已经以所需的格式存在,为什么还要格式化它?

    关于实际问题:

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

    date() 仅接受 unix 时间戳(自 1970-1-1 00:00:00 UTC 以来的秒数)或根本不接受时间戳。如果您想使用像您这样的时间戳,您需要先使用 date_create()mktimestrtotime 创建一个 unix 时间戳

    【讨论】:

    • Leon 这只是一个测试,在我做了所有尝试之后,我想到了使用安全的东西。
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2017-06-11
    • 2016-04-03
    • 2020-07-02
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多