PHP如何以固定区域/语言格式输出日期?
用IntlDateFormatter替代弃用的strftime实现多语言日期格式化
既然已经安装了php-intl扩展,直接用IntlDateFormatter类就能搞定,这是PHP官方推荐替代strftime的方案,跨平台兼容性也更好(不像strftime依赖系统本地locale)。
具体实现代码
假设你已经有一个DateTime类型的$myDataObj,直接用下面的代码就能生成意大利语格式的日期:
// 初始化意大利语日期格式化器 $formatter = new IntlDateFormatter( 'it_IT', // 指定语言区域为意大利语 IntlDateFormatter::NONE, // 不需要显示时间部分 IntlDateFormatter::NONE, date_default_timezone_get(), // 使用当前脚本的默认时区 IntlDateFormatter::GREGORIAN, // 使用公历 'd MMMM y' // 格式模式:日(不带前导零)、完整月份名、四位年份 ); // 格式化DateTime对象 $dataItalian = $formatter->format($myDataObj);
关键说明
- 格式模式
'd MMMM y'对应你原来用的%e %B %Y:d输出不带前导零的日期(比如5而不是05),MMMM输出完整的意大利语月份名(比如Ottobre),y输出四位年份。 - 不需要像原来那样把DateTime对象转成字符串再用
strtotime处理,直接传入format方法即可,效率更高也更准确。 - 如果需要调整时区,可以把
date_default_timezone_get()换成具体的时区字符串(比如'Europe/Rome')。
内容的提问来源于stack exchange,提问作者mario
相关产品推荐
相关产品推荐

