Time Conversion

HackerRank 問題: Time Conversion

Question

Given a time in 12-hour AM/PM format, convert it to military (24-hour) time.

Note: - 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.

  • 12:00:00PM on a 12-hour clock is 12:00:00 on a 24-hour clock.

HackerRank 問題: Time Conversion

Answer

<?php

/*
 * Complete the 'timeConversion' function below.
 *
 * The function is expected to return a STRING.
 * The function accepts STRING s as parameter.
 */

function timeConversion($time_string) {
    // get time format
    $time_format = substr($time_string, -2);
    // get time for 12h format
    $time_12h = substr($time_string, 0, -2);
    // get all hour, minute, second
    [$hour, $minute, $second] = explode(':', $time_12h);

    if ($time_format == 'AM') {
        // if is AM
        if ($hour == '12') {
            // if hour is 12 than change to 0
            $hour = '0';
        }
    }

    if ($time_format == 'PM') {
        // if is PM
        if ($hour < 12) {
            // if hour is less 12, add 12 hour
            $hour = $hour + 12;
        }
    }

    $time_24h = sprintf("%02d:%02d:%02d", $hour, $minute, $second);

    return $time_24h;
}

$fptr = fopen(getenv("OUTPUT_PATH"), "w");

$s = rtrim(fgets(STDIN), "\r\n");

$result = timeConversion($s);

fwrite($fptr, $result . "\n");

fclose($fptr);

Reference