繁体   English   中英

如何使用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 pm,例如:zh_CN的下午2时30分和zh_HK的下午2时半

您是否知道解决方案或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小时格式2位数字表示”),而不是%H (“24小时格式小时的2位数字表示”)连同%p/%P (“ AM / PM”)。 还有%X (“基于语言环境的首选时间表示形式,不带日期”)。

如果您确实不需要支持多种语言,那么编写自己的日期格式器将是一个明智的选择。

至于JavaScript,我总是在这里看到Moment.js的推荐,但是我没有使用过。

在中文时间支持方面,PHP的结果不一致。

对我有用的解决方案是输出时间ISO格式,并使用jQuerymoment.js来非常接近处理国际化时间的完美解决方案:

在php中,将您的时间输出到<span>

echo '<span date="'.date('c').'" moment-format="LT">'
    .date('h:n').'</span>';

其中date('c')返回ISO格式的日期, moment-format定义了moment.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'))
            );
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM