2013年10月27日 星期日

[PHP]利用IF-ELSE將秒數自動轉換成小時分鐘秒

在處理時間性資料(time-dependent)時,
有時候外部傳來的時間格式只有秒,如8590秒,
或如time()回傳的時間戳,
為方便進一步使用時間變項或顯示給user,因此常需要做時間的轉換,
其實PHP提供有date(),gmstrftime()等時間處理函數,
這邊隨手記錄下,實作此類function的筆記!
<?php
//將秒數自動轉換成小時分鐘秒
//Convert secs to string of day hours and mins
function convertSecToStr($secs) {
    if($secs >= 86400) {
        $days = floor($secs / 86400);
        $secs = $secs%86400;
        $r .= $days.' day';
  
    if($days <> 1) {
        $r .= 's';
    }
    if($secs > 0) {
        $r .= ', ';
    }
}
 
    if($secs >= 3600) {
        $hours = floor($secs / 3600);
        $secs = $secs%3600;
        $r .= $hours.' hour';
    if($hours <> 1) {
        $r .= 's';
    }
    if($secs > 0) {
        $r .= ', ';
    }
}
 
    if($secs >= 60) {
        $minutes = floor($secs / 60);
        $secs = $secs%60;
        $r .= $minutes.' minute';
    if($minutes <> 1) {
        $r .= 's';
    }
    if($secs > 0) {
        $r .= ', ';
    }
}
 
    $r .= $secs.' second';
    if($secs <> 1) {
        $r .= 's';
    }
    return $r;
}

$a = '979346';
$string = convertSecToStr($a);
echo "{$a} is equal to {$string}";
?>

2013年10月25日 星期五

[PHP]判斷時間格式

作表單時會需要user填入時間這類資訊,
通常使用checkdate()檢測時間是否正確,
今天想試試看,利用preg_match()作多一層的格式確認,
首先,先做一個簡易表單方便送值進去,
其實也可以直接寫在程式碼裡面測試,這樣就不用再寫form,
純粹看個人習慣,
這邊用GET的網址傳値,
順便在url檢視送進去的值,
(當然如果是password等就再用POST,這邊只是純練習)
<html>
<head></head>
<body>
    <form method="get">
        Date:<input type="text" name="date" />
        <input type="submit" name="send" /> 
    </form>
</body>
</html>
作出來的表單:
<?php
$date = $_GET[date];
//Check if date is in YYYY-MM-DD format
function checkDateFormat($date)
{
    //match the format of date by preg_match()
    //"^" 以指定字元或字串起始
    //"$" 以指定字元或字串結束
    //"\d" 與[0-9]相同,比對任何數字字元
    //"{n}" 指定字元出現n次
    if (preg_match ("/^([0-9]{4})([0-9]{2})([0-9]{2})$/", $date, $parts))
    {
        //check weather the date is valid of not
        if(checkdate($parts[2],$parts[3],$parts[1]))
            return true;
        else
        return false;
    }
    else
        return false;
}

if(checkDateFormat($date))
{
 echo 'yes it is right!!';
} else
 echo 'something might be wrong!!';
?>
寫好我的checkDateFormat()後,接下來就是測試噜,
TEST 1.
input=123

TEST 2.
input=1987/09/27

TEST 3.
input=19870927