【发布时间】:2016-04-08 11:12:57
【问题描述】:
我在使用“2016 年 4 月 15 日”等文字的日期使用 DateTime::createFromFormat()
只要我使用英语文化,它就可以完美地工作。
2016 年 4 月 15 日 -> 好的
我的代码设置为 WordPress 插件。请理解,我无法控制为我提供日期(作为文本)和 WordPress 设置的组件。如果用户将 WordPress 安装设置为另一种语言,则日期将从“2016 年 4 月 15 日”更改为(如果是法语)“2016 年 4 月 15 日”。
看起来DateTime::createFromFormat() 不支持英语以外的其他语言,所以“2016 年 4 月 15 日”最终会是:
“致命错误:在布尔值上调用成员函数 format()”
有人知道我们如何将月份日期处理为多种语言的文本吗?在php中使用DateTime::createFromFormat()或其他方法?
谢谢
【问题讨论】:
-
您能否详细说明“我无法控制给我日期的组件”?如果您描述插件,也许我们可以找到更好的解决方案。我认为实际上您可以获得有关您的日期的非本地化信息。
-
您好,我从amsul.ca/pickadate.js 的 POST 值中获取信息,并且文化由 WP 管理员设置。
-
如果你看一下pickadate.js docs,你可以看到它有一个
formatSubmit选项:使用这个选项,你的问题就解决了。 -
谢谢,但我无法控制组件和 CMS,我只是在界面的另一边。我只是像“钩子”/“触发器”一样从第 3 方捕获价值如何使用它。所以问题是“有人知道我们如何将月份日期作为多种语言的文本处理吗?”谢谢
-
你必须花一些时间来描述详细你的插件和上下文(编辑问题,不在cmets中),否则它是只是浪费时间。基本上,在 php 中,您可以使用
strptime和setlocale来解决这个问题,但在您的具体情况下,有很多未定义的变量:wordpress 语言环境(您可以检索它吗?)、本地化字符串(在 wp 中不是与 php 相同),日期格式(在 pickadate.js 中这种格式是基于 wp 配置的?它是由用户自定义的?它是出厂设置?)。这只是您的问题调用的子问题的简短列表。
标签: php wordpress datetime internationalization