【问题标题】:Convert specific string to time in PHP在 PHP 中将特定字符串转换为时间
【发布时间】:2012-11-30 17:58:26
【问题描述】:

我需要将字符串转换为日期格式,但它返回了一个奇怪的错误。字符串是这样的:

21 nov 2012

我用过:

$time = strtotime('d M Y', $string);

PHP 返回错误:

Notice:  A non well formed numeric value encountered in index.php on line 11

我在这里错过了什么?

【问题讨论】:

  • 你应该看看DateTime::createFromFormat();例如:codepad.viper-7.com/0b0edk。这使您可以准确地设置您期望的格式,使您免于 strtotime() 对美国 mm-dd 样式日期的无意义解析 - 如果您考虑一下,这是一种不人道的愚蠢格式。

标签: php date strtotime


【解决方案1】:

您完全错误地调用了该函数。就通过吧

$time = strtotime('21 nov 2012')

第二个参数用于传入与新时间相关的时间戳。默认为time()

编辑:这将返回一个 unix 时间戳。如果您想对其进行格式化,请将您的新时间戳传递给 date 函数。

【讨论】:

    【解决方案2】:

    要将日期字符串转换为不同的格式:

    <?php echo date('d M Y', strtotime($string));?>
    

    strtotime 解析字符串返回表示的 UNIX 时间戳。 date 将 UNIX 时间戳(或当前系统时间,如果未提供时间戳)转换为指定格式。因此,要重新格式化日期字符串,您需要将其传递给strtotime,然后将返回的 UNIX 时间戳作为date 函数的第二个参数传递。 date 的第一个参数是您想要的格式的模板。

    Click here 了解有关日期格式选项的更多详细信息。

    【讨论】:

      【解决方案3】:

      你使用了错误的函数,strtotime 只返回自纪元以来的秒数,它不格式化日期。

      尝试做:

      $time = date('d M Y', strtotime($string));
      

      【讨论】:

      • 最初,-1 表示试图获得极差的 FGITW 答案。Downvote 保留,因为它没有回答问题。
      • @NullUserException 对此感到抱歉。我正在打字,它提交了....
      • 您的代码所做的只是将输入字符串吐出为21 Nov 2012,这并不是特别有用。 OP 似乎想要一种可用于计算而非演示的日期格式。
      【解决方案4】:

      对于更复杂的字符串,使用:

      $datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here);
      $timestamp = $datetime->getTimestamp();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-15
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 2018-03-29
        相关资源
        最近更新 更多