devlin carnate
devlin carnate

Reputation: 8622

Current date is failing to format in PHP

I'm using the jquery datepicker, and when today's date is selected, it's failing to convert to the format I need for a database query.

The datepicker date format is 'm-d-Y', so today appears as 09-16-2013. This part is working, and the datepicker correctly displays today's date as the default selection.

However, I need to use 'Y-m-d' format to query the database. This works fine when the date is less than today. But for today, it's failing and I'm getting 1969-12-31.

echo $enddt;

displays: 09-16-2013

I have tried:

echo date('Y-m-d', strtodate($enddt));
echo date('Y-m-d H:i:s', strtodate($enddt));

and neither works. How do I format $enddt so it displays 2013-09-16 ?

Upvotes: 1

Views: 108

Answers (2)

Amal
Amal

Reputation: 76666

The function is actually strtotime(), not strtodate():

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed. To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates or DateTime::createFromFormat() when possible.

Since you have the date string separated by dashes, we'll need to convert it into slashes first to make strtotime() recognize the format as mm/dd/yyyy:

$enddt = '09-16-2013';
$enddt = str_replace('-', '/', $enddt);
echo date('Y-m-d', strtotime($enddt));

Demo!

Upvotes: 3

John Conde
John Conde

Reputation: 219934

$enddt = DateTime::createFromFormat('m-d-Y', '09-16-2013');
echo $enddt->format('Y-m-d');

See it in action

Upvotes: 2

Related Questions