如何查询PHP IntlDatePatternGenerator支持的日期骨架?
因为PHP的IntlDatePatternGenerator是基于ICU(International Components for Unicode)库实现的,getBestPattern()方法的行为完全依赖ICU的DatePatternGenerator组件,所以可以通过以下几种方式查询支持的日期骨架:
查看ICU头文件:系统中安装的ICU开发包通常包含定义日期骨架相关规则的头文件,比如
/usr/include/unicode/datefmt.h(路径可能因系统而异)。打开这个文件可以找到标准日期骨架的常量定义,比如"yMMMd"、"EEEEHHmmss"、"MMMdy"等,这些都是getBestPattern()支持的骨架格式。查看PHP Intl扩展源码:PHP的Intl扩展源码中,
ext/intl/datepatterngenerator/datepatterngenerator.c文件直接封装了ICU的相关方法。查看该文件的代码和注释,能明确PHP如何传递骨架参数到底层,以及哪些骨架格式是被ICU所支持的。使用ICU自带工具验证:如果系统安装了ICU开发工具包,可通过
dtpgenerator工具直接测试骨架的有效性。比如执行命令:dtpgenerator -s "yMMMd" -l zh_CN该命令会返回对应骨架适配指定语言的最佳日期格式,同时也能验证骨架是否被支持。
查阅ICU本地文档:如果系统中安装了ICU的本地文档(比如通过包管理器安装
icu-doc类的包),可以直接查看其中关于DatePatternGenerator的章节,里面会详细列出支持的日期骨架规则和示例。
内容的提问来源于stack exchange,提问作者Greenflash

