PHP preg_replace for Time

I need a PHP function[s] (? preg_replace) that will convert different entered time formats to the standard hh:mm.
Possible entered formats include:
hh:mm
h:mm
hh.mm
h.mm
hhmm
hmm
h
gorrie67Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Terry WoodsConnect With a Mentor IT GuruCommented:

function to_std_time($time) {
  $patterns = array("/^(\d)\D?(\d\d)$/", #one digit hour
                    "/^(\d\d)\D?(\d\d)$/", #two digit hour
                    "/^(\d)$/", #one digit hour, no minutes
                    "/^(\d\d)$/"); #two digit hour, no minutes
  $replacements = array("0$1:$2",
                        "$1:$2",
                        "0$1:00",
                        "$1:00");
  return preg_replace($patterns, $replacements, $time);
}

Open in new window

0
 
Terry WoodsIT GuruCommented:
Something like this should work a treat for all your examples. Will test it shortly.
$patterns = array("/^(\d)\D?(\d\d)$/", #one digit hour
                  "/^(\d\d)\D?(\d\d)$/", #two digit hour
                  "/^(\d)$/");
$replacements = array("0$1:$2",
                      "$1:$2",
                      "$1:00");
$result = preg_replace($patterns, $replacements, $time);

Open in new window

0
 
Terry WoodsIT GuruCommented:
It passed testing as is with your example data. To wrap it in a function:
function to_std_time($time) {
  $patterns = array("/^(\d)\D?(\d\d)$/", #one digit hour
                    "/^(\d\d)\D?(\d\d)$/", #two digit hour
                    "/^(\d)$/");
  $replacements = array("0$1:$2",
                        "$1:$2",
                        "$1:00");
  return preg_replace($patterns, $replacements, $time);
}

Open in new window

0
 
Terry WoodsIT GuruCommented:
Of course you might like to add criteria to handle invalid formats too.
0
 
gorrie67Author Commented:
Thanks TerryAtOpus

All works fine, except for inputs of hh only, ie 8, 12, 13

these need to be formatted to hh:mm, ie 08:00, 12:00, 13:00

Can this be added to function?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.