【问题标题】:Get format string from formatted date using PHP使用 PHP 从格式化日期获取格式字符串
【发布时间】:2014-02-01 18:32:02
【问题描述】:

是否可以在 PHP 中获取格式化日期字符串的格式?

例如,

Input: 2014-02-01
Output: Y-m-d

Input: February 1, 2014
Output: F j, Y

我了解tomorrow 或“下周一”等相对日期会有问题。因此,输入将是一个完整的日期字符串,格式为strtotime 接受。

【问题讨论】:

  • PHP date format converting 的可能重复项以及很多很多......但是为什么不使用 DateTime 对象而不是限制自己使用 strtotime()?
  • 不,不是。在另一个问题中,他想以指定的格式(他已经知道)解析日期。我想要 strtotime 自动解析日期的格式。简单来说,他期待一个日期时间,而我期待一个日期格式字符串(如'Y-m-d')
  • 可能比较难,但是你可以查看strtotime的源代码:github.com/php/php-src/blob/master/ext/date/php_date.c
  • 根据定义,这对于任意输入几乎是不可能的;例如01/02/03 是什么?我认为你能做的最好的就是准备一堆带有映射到输出的预期输入的正则表达式,例如/^\d{4}-\d{2}-\d{2}$/ → 'Y-m-d'。
  • 如果您是为 i18n 执行此操作,那么您肯定还有其他需要检查的内容。

标签: php date


【解决方案1】:

作为answered elsewhere on StackOverflow,没有明确的方法可以做到这一点。您必须为要支持的所有格式创建正则表达式。

根据您支持的格式,这将在不同的国际化场景中遇到问题,正如您的问题的 cmets 和the answer to this question 中所指出的那样:

对于诸如 2009 年 3 月 2 日这样的模棱两可的日期,您无能为力,它可以表示为 09/03/022009-03-0202/03/0903/02/09,甚至是 09/02/03

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2012-02-14
    • 1970-01-01
    相关资源
    最近更新 更多