首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP仅调用字符串项的一部分

PHP仅调用字符串项的一部分
EN

Stack Overflow用户
提问于 2018-06-09 02:55:20
回答 2查看 46关注 0票数 1

所以我还没有学会PHP,但我们的人通常会为我们的网站编写函数是忙碌的。所以我试图用非常有限的知识来解决这个问题。我需要转换4位军队时间(0800,0815,0830,0845,0900...)进入标准时间(上午8:00,上午8:15,...)。我写了一个方程式,但它返回的所有小时都是12点,而且总是下午这是我的方程式。

function convert_army_to_regular($time) {
    $hours = substr($time, 0, 1);
    $minutes = substr($time, 2, 3);

    if ($hours > 12) { 
        $hours = $hours - 12;
        $ampm = 'PM';
    } else if ($hours = 12) {
           $ampm = 'PM';
    } else {
        if ($hours < 11){
        $ampm = 'AM';
        }
    }

  return $hours . ':' . $minutes . $ampm;
}

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-09 03:19:23

你的代码有两个问题,=是一个赋值。您需要使用==进行比较(或者===也可以,它也可以检查类型)。

第二个问题是substr。该函数的起始位置为参数1,前进的字符数为2。因此,在这两个示例中,第二个参数都应该是2。

$hours = substr($time, 0, 2);
$minutes = substr($time, 2, 2);

您还可以将其强制转换为int,如果它小于10,则会删除前导0

$hours = (int)substr($time, 0, 2);

您也可以使用正则表达式来完成此操作:

echo preg_replace_callback('/(\d{2})(\d{2})/', function($match) {
    $hours = (int)$match[1];
    $minutes = $match[2];
    $median = 'AM';
    if($hours > 12 ) {
        $hours = $hours - 12;
        $median = 'PM';
    } 
    return $hours . ':' . $minutes . $median;
},'1800');
票数 1
EN

Stack Overflow用户

发布于 2018-06-09 03:16:52

更容易利用strtotime函数和日期。

$stime = '0830';

echo date("g:ia", strtotime($stime));

结果是早上8:30

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档