使用php strftime可以定义%p吗?
对于某些区域设置,使用php strftime可以定义%p吗?,php,strftime,Php,Strftime,对于某些区域设置,%p返回一个空字符串。在这些情况下,我更愿意让它返回AM或PM,即使这对语言不正确 用例是事件日历,用户可以选择覆盖默认值并指定他们想要的12小时时间。如果在类的开头,我可以检测%p是否返回本地化字符串或空字符串,并在空字符串时将其定义为AM或PM,那么代码将变得容易得多 --编辑-- 在许多地区,例如ru_ru,%p返回一个无用的空字符串。如果没有定义AM或PM的翻译,我想将其定义为AM或PM。就像我在指定编辑之前的问题一样。首先想到的是,这可能更像是一个绷带解决方案,但
%p
返回一个空字符串。在这些情况下,我更愿意让它返回AM或PM,即使这对语言不正确
用例是事件日历,用户可以选择覆盖默认值并指定他们想要的12小时时间。如果在类的开头,我可以检测%p
是否返回本地化字符串或空字符串,并在空字符串时将其定义为AM或PM,那么代码将变得容易得多
--编辑--
在许多地区,例如
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);
这就是我最终要做的$这个->安全12是在类初始化时通过查看
strlen(strftime('%p', $now))
你能提供你的代码作为吗?该死的评论界面很烂,点击返回另一行,它就提交了。我将在秒$start=strftime($dformat,$node->start)中添加它$搜索=数组(“/^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)$事件->设置属性('start',$start)$数据格式可以是多种形式,其中一些包括%p和$this->getstring国际化午夜和中午。显然,注释中的小标记不理解4空格表示代码。将问题添加为编辑,不要在注释中发布代码!我有自己的绷带可以使用,我希望有一种方法可以在没有定义的情况下定义%p。虽然您的bandaid比我的要好,但我的bandaid在%p的任一侧包含一个分割命令和两个对strftime的调用。很酷,可能最好将它放在一个私有函数中,以保持代码更干净,无论如何,我都会这么做。
private function TwelveHourHack($dformat, $ts) {
if($this->safeTwelve) {
return strftime($dformat, $ts);
}
$dformat = preg_replace('/%p/', date('A', $ts), $dformat);
return strftime($dformat, $ts);
}
strlen(strftime('%p', $now))