Helping ordinary people create extraordinary websites!

A Class for Validating and Formatting Dates

By Tony Marston
2005-04-16

Display date to the User
This function will take a date from the database (although it could come from other sources) and format it ready for display to the user.



function getExternalDate ($input)
{
This first part checks for input in the format yyyymmdd.
     if (strlen($input) == 8) {

$pattern = '(^[0-9]{4})' // 4 digits (yyyy)
.'([0-9]{2})' // 2 digits (mm)
.'([0-9]{2}$)'; // 2 digits (dd)
if (ereg($pattern, $input, $regs)) {
if (!checkdate($regs[2], $regs[3], $regs[1])) {
$this->errors = 'This is not a valid date';
return FALSE;
} else {
$monthnum = (int)$regs[2];
$this->externaldate = "$regs[3] " .$this->monthalpha[$monthnum] ." $regs[1]";
return $this->externaldate;
} // if
} // if
$this->errors = "Invalid date format: expected 'yyyymmdd'";
return FALSE;
} // if
If this does not find a match this next part checks for input in the format yyyy-mm-dd.
 if (strlen($input) == 10) {

$pattern = '(^[0-9]{4})' // 4 digits (yyyy)
.'([^0-9])' // not a digit
.'([0-9]{2})' // 2 digits (mm)
.'([^0-9])' // not a digit
.'([0-9]{2}$)'; // 2 digits (dd)
if (ereg($pattern, $input, $regs)) {
if (!checkdate($regs[3], $regs[5], $regs[1])) {
$this->errors = 'This is not a valid date';
return FALSE;
} else {
$monthnum = (int)$regs[3];
$this->externaldate = "$regs[5] " .$this->monthalpha[$monthnum] ." $regs[1]";
return $this->externaldate;
} // if
} // if
$this->errors = "Invalid date format: expected 'dd-mm-yyyy'";
return FALSE;
} // if
If we have not found a match against any of these patterns then we generate an error message before returning an empty result to the user.

$this->errors = 'This is not a valid date';

return $input;

} // getExternalDate




Tutorial pages:
 1 Votes

You might also want to check these out:


Leave a Comment on "A Class for Validating and Formatting Dates"
You must be logged in to post a comment.

Link to This Tutorial Page!


GET OUR NEWSLETTERS