12

Is there a function that uses the date() format to interpret a string?

echo date('s-i-H d:m:Y', 1304591364); // 34-29-17 05:05:2011

// Does this function exist?
echo inverse_date('s-i-H d:m:Y', '34-29-17 05:05:2011'); // 1304591364

I know strtotime(), but it’s failing me in most cases as I am not parsing English date formats.

I’m looking for a function that can dictate the format.

TRiG
  • 9,687
  • 6
  • 54
  • 105
Moak
  • 12,093
  • 27
  • 108
  • 164

7 Answers7

13

The real answer to this question the way I mean it is http://www.php.net/manual/en/datetime.createfromformat.php

    $date = date_create_from_format('j-M-Y', '15-Feb-2009');
    echo date_format($date, 'Y-m-d'); // 2009-02-15
Moak
  • 12,093
  • 27
  • 108
  • 164
9

You would typically use strtotime for that:

echo strtotime('2011-05-05 17:29:34');

From the manual:

strtotime — Parse about any English textual datetime description into a Unix timestamp

See valid date and time formats to be sure that the string you are passing in will be parsed correctly.

karim79
  • 334,458
  • 66
  • 409
  • 405
  • Sorry, I forgot to mention that I used strtotime, but as I am not based in the US, I need to control the formats – Moak May 05 '11 at 09:41
4

PHP 5.4+ will print 1359674625

echo date_create_from_format('j/n/Y G:i:s','1/2/2013 1:23:45')->getTimestamp();
mu3
  • 589
  • 6
  • 18
1

The accepted answer is right IMO, but you can also use the OO syntax: DateTime::createFromFormat eg:

$dateTimeObject = \DateTime::createFromFormat('G:i', '9:30');
$dateTimeObject->format('H:i');

See http://php.net/manual/en/function.date.php for formatting guides, and http://php.net/manual/en/datetime.createfromformat.php for info on the method described above.

Aaria Carter-Weir
  • 1,579
  • 10
  • 17
1

The function mktime seems to do what you want.

Check the help over at php.net:

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

EDIT : indeed strtotime may be more convenient for you, I did not know that function, glad to learn.

Aabaz
  • 3,076
  • 2
  • 20
  • 26
0

Try this to reverse:

$x = '2013-09-15';

$x = implode('-', array_reverse(explode('-', $x)));

// now $x = '15-09-2013'

Riad
  • 3,776
  • 5
  • 27
  • 38
0

Yes you can use:

echo strtotime("2011-05-05 17:29:34");
Headshota
  • 20,343
  • 11
  • 58
  • 79