【发布时间】:2012-06-09 23:33:19
【问题描述】:
所以我需要在 PHP 中将 pm/am 转换为 24 小时制,我们使用 Yahoo API 来获取货币汇率,但他们似乎在 am/pm 之前给了我们。
我认为 date 可能有效,但是当我读入该函数时,它无法将 pm 变成 24 小时。
5: 55pm
【问题讨论】:
所以我需要在 PHP 中将 pm/am 转换为 24 小时制,我们使用 Yahoo API 来获取货币汇率,但他们似乎在 am/pm 之前给了我们。
我认为 date 可能有效,但是当我读入该函数时,它无法将 pm 变成 24 小时。
5: 55pm
【问题讨论】:
使用date 和strtotime 的问题是您可能需要担心时区...您从雅虎获得的信息可能与您服务器的时区不一致...这是一个正则表达式方法:
$time = preg_replace_callback('~^([^:]+)(.*(a|p)m)$~',create_function('$m','return ($m[3]=="p")?(($m[1]+12).$m[2]):$m[0];'),$time);
【讨论】:
如果雅虎! API 确实没有提供在 24 小时内返回时间的方法,您可以按照 sachleen 的建议进行操作,或者使用正则表达式。
(\d{1,2}): (\d{2})(am|pm)
如果是“下午”,则只需将小时数加 12。
【讨论】:
这应该可行
date("H:i", strtotime("5:55 pm"));
如果你想走另一条路,
date("g:i a", strtotime("17:55"));
【讨论】: