将未格式化的时间编号格式化为24小时可读

My client has entered some start and end dates into our system and I want to be able to format it with PHP.

The values are 930 and 1530. Processing the 1530 variable is fine but its the 930 that returns false.

Here is my script so far but no success. Error returns bool(false) because it can't get a readable time (I believe?)

    $time = DateTime::createFromFormat('Hi', $var);
    $format = "H:i";
    $result = $time->format($format);

That's because your initial time format is ambiguous. Assuming that you have time without leading zeros all the time one can do something like this:

$var = '930';
$time = DateTime::createFromFormat('Hi', str_pad($var, 4, '0', STR_PAD_LEFT));
$format = "H:i";
$result = $time->format($format);

I wouldn't bother with DateTime for this, split it and join it like this:

$var = 1530;
$minutes = substr($var, -2, 2);
$hours = str_replace($minutes, '', $var);
$time = $hours . ':' . $minutes;

Then use DateTime on the string:

$dateTime = new DateTime($time);
$time = $dateTime->format('H:i');