• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 872
  • Last Modified:

How can I validate a MYSQL Timestamp with PHP?

I have a page that builds what I believe is a UNIX Timestamp, in the following format:

YYYYMMDDHHMMSS

My PHP script fails to insert the date into MySQL if a date that doesn't exist, such as February 31st, is selected.  Does PHP have a built in function to do this kind of validation or do I have to create my own function?
$invoiceTimeStamp  = $_POST['invoiceYear'];
$invoiceTimeStamp .= $_POST['invoiceMonth'];
$invoiceTimeStamp .= $_POST['invoiceDay'];
$invoiceTimeStamp .= "000000"; // zero hour, minute, and second

Open in new window

0
CheeserTheAverage
Asked:
CheeserTheAverage
  • 2
1 Solution
 
Roger BaklundCommented:
First, this is not a unix timestamp. A unix timestamp is an integer, the number of seconds since 1/1-1970.

You could use the PHP function mktime() to validate.

http://php.net/manual/en/function.mktime.php

Note that this will only work for dates between 1970 and 2038 on some systems (windows before PHP 5.1), and for dates between 1901 and 2038 in newer PHP versions (5.1+).
function ValidDate($y,$m,$d) {
  if(strlen($m)<2) $m = '0'.$m;
  if(strlen($d)<2) $d = '0'.$d;
  return (date('Y-m-d',mktime(0,0,0,$m,$d,$y))=="$y-$m-$d");
}

Open in new window

0
 
Roger BaklundCommented:
I just found out PHP has a builtin function for this: checkdate()

http://php.net/checkdate
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now