使用PHP strftime可以定义%p吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP strftime可以定义%p吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1409字,纯文字阅读大概需要3分钟。
内容图文
![使用PHP strftime可以定义%p吗?](/upload/InfoBanner/zyjiaocheng/682/e245598fa2ab4772a314ae7bf6ec8938.jpg)
使用某些区域设置,%p返回一个空字符串.在这种情况下,我希望它返回AM或PM,即使这对于该语言而言是不正确的.
用例是事件的日历,用户可以选择覆盖默认值并指定他们想要12小时的时间.如果在课程开始时,我可以检测%p是否返回本地化的字符串或为空,并在为空时将其定义为AM或PM,这将使代码容易得多.
-编辑-
<?php
setlocale(LC_TIME, 'ru_RU.UTF8');
print(strftime('%l:%M %p %Z', time()));
?>
在许多语言环境中,例如ru_RU,%p返回一个无用的空字符串.当未定义AM或PM的转换时,我想将其定义为AM或PM.就像我在指定编辑之前的问题一样.
解决方法:
首先想到的是,这可能更像是创可贴的解决方案,但是要在$dformat中检查%p
编辑的解决方案
如果我在注释中收集到各种格式的格式,那么最好是在%p呈现空字符串的情况下实际插入自己的%p,因此此解决方案可能对您有用:
$check_for_empty_string = false;
if (preg_match("@%p@", $dformat)) {
if (strftime('%p', $node->start) == '') {
// get 24 hours
$hour = strtotime('%H', $start);
if ($hour >= 12) {
// it's PM
$dformat = preg_replace("@%p@", $this->PM, $dformat);
} else {
$dformat = preg_replace("@%p@", $this->AM, $dformat);
}
}
}
$start = strftime($dformat, $node->start);
$search = array(
'/^12:00 ' . $this->AM . '/',
'/^00:00$/', '/^12:00 ' . $this->PM . '/',
'/^12:00$/'
);
$replace = array(
'12:00 ' . $this->getString('Midnight'),
'00:00 ' . $this->getString('Midnight'),
'12:00 ' . $this->getString('Noon'),
'12:00 ' . $this->getString('Noon')
);
$start = preg_replace($search, $replace, $start);
$event->setAttribute('start', $start);
内容总结
以上是互联网集市为您收集整理的使用PHP strftime可以定义%p吗?全部内容,希望文章能够帮你解决使用PHP strftime可以定义%p吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。