【问题标题】:PHP date not working with saved value timestampPHP日期不适用于保存的值时间戳
【发布时间】:2019-02-02 19:01:19
【问题描述】:

我正在尝试使用 php 这样的日期转换时间戳...

update_option('last_lookup', time());
$last_lookup = get_option('last_lookup');

$timestamp1 = date("c", $last_lookup);
$timestamp2 = date("c" , 1549133279);

echo $last_lookup;
echo $timestamp1;
echo $timestamp2;

只有$timestamp2 会返回正确的结果,如果我回显$last_lookup,那么我会得到正确的时间戳。

会不会$last_lookup是一个字符串,而日期需要一个整数?

谁能提出解决办法?

更新

在 $last_lookup 上执行 var_dump 会给我...

string(10) "1549133279"

【问题讨论】:

  • 结果完全取决于$last_lookup 包含的内容以及您设置的时区...
  • last_lookup 在哪里分配?如果是字符串,则需要使用 strtotime();
  • 你的 last_lookup 在哪里
  • $last_lookup 来自 wordpress 选项。如果我回显它,它会显示正确的时间戳 1549133279
  • 已使用 $last_lookup 的来源更新帖子。 WordPress 在存储时间戳时必须对其进行处理

标签: php


【解决方案1】:

您的时间戳字符串是来自 time() 的 unix 时间戳

您可以使用date() 函数将其转换为时间戳格式。

例如,传递你的字符串

1549133279

$timestamp = date('Y-m-d H:i:s', $t);

收益2019-02-02 18:47:59

编辑:

作为更新,出于好奇,我将您的代码放入wp-content/themes/twentynineteen/index.php(我用来测试的主题)的 index.php 文件中,并且没有任何问题。我在每个回声的末尾添加了一个中断,并且能够看到以下内容:

1549137644
2019-02-02T20:00:44+00:00
2019-02-02T18:47:59+00:00

当然,时间是不同的,因为一个是在运行时确定的,另一个是绝对的,所以我相当确定您在此处发布的代码没有任何问题。

【讨论】:

    【解决方案2】:

    此方法运行良好且经过测试,请尝试这种方式,如果仍然遇到问题,请使用其他功能调试您的代码

    $last_lookup = time();
    
    $timestamp1 = date("c", 1549133279);
    $timestamp2 = date("c", "1549133279");
    $timestamp3 = date("c", $last_lookup);
    
    echo $last_lookup;
    echo "<br>";
    echo $timestamp1;
    echo "<br>";
    echo $timestamp2;
    echo "<br>";
    echo $timestamp3;
    

    【讨论】:

    • 如果我在你的代码中对 $last_lookup 执行 var_dump,那么它会显示 int(1549135983) - 如果我在我的代码上执行,那么它会执行 string(10) "1549133279"
    • date方法可以处理string值和int值
    • 我迷路了,一定是 WordPress 对价值观做了一些奇怪的事情
    • 是的,你可能会发现他们
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2013-06-16
    相关资源
    最近更新 更多