[编辑]: 我想人们可能有些难以理解我所说的内容,所以我完全重新编写了我的解释。
我正在开发一个项目,用户可以定义整个网站使用的日期格式,它使用PHP日期格式标准。例如:"年-月-日" 被设置为 "Y-m-d"。
PHP标准使用单字符符号(如 Y,m,d,F,j )来描述日期格式。如文档中所示:http://www.php.net/manual/en/function.date.php
有时用户可以通过jQueryUI Datepicker选择日期。该组件使用类似于yy,y,mm,dd,D,...的代码词来描述其日期格式。http://api.jqueryui.com/datepicker/#utility-formatDate
我希望在PHP和Datepicker中都以相同的格式显示日期。 我的意思是PHP应该按照用户设置的格式输出日期,并且Datepicker应该以相同的格式显示已选择的日期。
鉴于:
- 日期格式一定要以“PHP样式”进行描述
- 我无法预先知道用户设置了哪种格式
/!\ 这不是如何从已知格式读取/解析/显示日期的问题。
不幸的是,Javascript日期格式描述与PHP中不同。 例如,这两个日期格式在PHP和Javascript中都是等效的,但描述方式不同:
- PHP:Y-m-d(用户设置)
- Javascript:yy-mm-dd
正如您所看到的,我不能仅使用PHP日期格式来配置Datepicker,因为它可能会被误解或完全无法识别。
在下面的答案中,有人建议创建自己的“日期格式标准转换器”,将每个PHP符号与其在JS日期格式说明中的等效符号匹配。就像这样:- Y => yy
- m => mm
- d => dd
- y => y
- z => o
- ...
编辑:我撰写了一篇教程,介绍了问题和解决方案。更多阅读:http://tristan-jahier.fr/blog/2013/08/convertir-un-format-de-date-php-en-format-de-date-jqueryui-datepicker
echo $date->format("any_format");
- Tristan Jahier