【问题标题】:PHP: Convert a german date format (%d.%m.%Y) into a valid unix timestamp? [duplicate]PHP:将德语日期格式 (%d.%m.%Y) 转换为有效的 unix 时间戳? [复制]
【发布时间】:2012-05-09 08:39:38
【问题描述】:

可能重复:
Convert one date format into another in PHP

我知道那里有很多帖子,但是没有任何经过验证或接受的答案可以很好地解释这一点!

我正在使用 Wordpress 并使用它来将日期保存到数据库中……

update_post_meta($post->ID, "event_date", $_POST["_wr_event_date"]);

我只需将我想要的日期(例如 08.05.2012)放入 _wr_event_date 字段,它就成功地存储到数据库中。然而,对于更多的东西,我需要这个日期是可排序的,我想把它转换成一个 unix 时间戳。

如何将我输入的日期值“08.05.2012”(德国日期格式:%d.%m.%Y)转换为代表该时间的 unix 时间戳?

我曾想过使用pdate_post_meta($post->ID, "event_date", strtotime($_POST["_wr_event_date"]));,但我想知道这是否正确,因为我想不出为什么strtotime() 应该自动知道我输入的日期格式!?

对此有什么想法吗?提前谢谢你。

【问题讨论】:

  • strtotime(implode('-',array_reverse(explode('.', $_POST["_wr_event_date"]))) 将给出正确的时间戳。 nnnn-nn-nn 始终被 strtotime() 假定为 yyyy-mm-dd
  • 仅仅因为没有(据说)任何答案显示如何以您的特定格式使用DateTime::createFromFormat,并不意味着之前没有回答过这个问题。这只是一个抽象的问题。一个问题不是重复的,因为我们还没有给出任何可能的参数组合。

标签: php wordpress date unix-timestamp


【解决方案1】:

只需使用 DateTime(strtotime,工作方式类似,但我更喜欢 DateTime):

$a = new DateTime('08.05.2012');
echo $a->getTimestamp();

strtotime 和 DateTime 库编写得非常好,它们几乎可以检测每种情况,所以你很高兴。

否则,只需在数据库中选择一个 DATE 字段,然后您也可以在那里对其进行排序。

【讨论】:

  • 我好像没有安装 dateTime 库?我该怎么做?
  • 根据manual,您的版本低于PHP 5.2,因为它说There is no installation needed to use these functions; they are part of the PHP core.,所以您应该坚持strtotime(),它的工作原理类似准确。 (但如果你的版本真的那么旧,你应该考虑升级它)
  • 好的,非常感谢,我升级了php版本,它工作了!
  • 这适用于这个特定的问题,但一般来说它非常不可靠。如果您尝试 d/m/Y: new DateTime('22/12/2009') - 它会失败。有很多国家都采用这种日期格式。
【解决方案2】:

您也可以使用mktime 功能 - mktime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多