如何用PHP格式化中文小时和分钟
How to format hour and minute in Chinese with PHP
我需要用PHP以中文格式显示时间。
我已经尝试使用 strftime:
setlocale(LC_TIME, "zh_CN");
echo strftime("%a, %Y %B %d");
它的工作日期和显示: 二, 2013 十一月 05
但对于时间:
setlocale(LC_TIME, "zh_CN");
echo strftime("%H %M");
显示 : 14 30
但是下午2:30必须显示如下:下午2时30分表示zh_CN,下午2时半表示zh_HK
您是否拥有解决方案或 php 库来做到这一点?
感谢
PS :客户端的javascript解决方案也可以很好;)
我没有得到您想要的确切输出,但这通常对于 intl 扩展来说是一个很好的工作:
<?php
$locales = array(
'en_US',
'en_GB',
'zh_CN',
'zh_HK',
);
$date = new DateTime('14:30');
foreach($locales as $locale){
$fmt = new IntlDateFormatter($locale, IntlDateFormatter::NONE, IntlDateFormatter::SHORT);
echo $fmt->format($date) . PHP_EOL;
}
。指纹:
2:30 PM
14:30
下午2:30
下午2:30
如果你坚持使用strftime,你必须使用%I
("12小时格式的两位数小时表示")而不是%H
("24小时格式的两位数小时表示")以及%p/%P
("AM/PM")。还有%X
("基于区域设置的首选时间表示形式,没有日期")。
如果您真的不需要支持多种语言,那么编写自己的日期格式化程序将是一个明智的选择。
至于JavaScript,我总是看到Moment.js在这里推荐,但我没有使用过它。
PHP 在中文时间支持方面给出的结果不一致。
对我有用的解决方案是输出时间ISO格式并使用jQuery和moment.js非常接近处理国际化时间的完美解决方案:
在 php 中输出您的时间到<span>
。
echo '<span date="'.date('c').'" moment-format="LT">'
.date('h:n').'</span>';
其中date('c')
返回 ISO 格式的日期,moment-format
定义格式时刻.js 应该用来替换 ISO 时间
在Javascript中,您只需替换所有时间格式:
moment.lang('zh-cn'); // or zh-tw
$('span[moment-format]').each(function(index, element) {
if($(this).attr('date'))
{
$(this).html(
moment().format($(this).attr('moment-format'))
);
}
});
相关文章:
- 每小时倒计时一次,但以30分钟为单位
- 如何在javascript中将秒转换为分钟和小时
- 如何将分钟格式化为小时和分钟,但仅显示小时(如果's>60分钟
- 引导时间选择器在增加或减少小时和分钟的同时获取 NaN
- 计算JavaScript中的时间差异(天+小时+分钟+秒)
- 根据小时和分钟更改 CSS
- jQuery倒计时隐藏天/小时/分钟(如果没有)
- Javascript:如何以毫秒为单位将时间显示为天:小时:分钟
- 在 Google 图表 y 轴上将时间格式设置为小时:分钟
- 从时间戳中获取天数小时分钟数
- 按日期分组,忽略小时/分钟/秒
- JS倒数计时器与天:小时:分钟
- 将JavaScript日期格式设置为小时:分钟:秒
- 如何在1小时3分钟内将功能时间和日期转换为类似内容
- Javascript显示毫秒为天:小时:分钟,没有秒
- 如何在dijit.form.TimeTextBox中设置时间模式以显示小时:分钟am|pm ?
- Javascript:代码2下拉框(小时:分钟)
- 从下拉菜单中获取小时分钟值,仅在javascript中的setInterval()中进行初始化
- 我需要转换成“1小时9分钟”之类的东西;PHP中的秒数
- HighCharts小时/分钟