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
  • 10,148
  • 7
  • 57
  • 107
Moak
  • 12,596
  • 27
  • 111
  • 166

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,596
  • 27
  • 111
  • 166
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
  • 339,989
  • 67
  • 413
  • 406
  • 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
  • 739
  • 1
  • 7
  • 19
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,639
  • 12
  • 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,106
  • 2
  • 21
  • 26
0

Try this to reverse:

$x = '2013-09-15';

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

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

Riad
  • 3,822
  • 5
  • 28
  • 39
0

Yes you can use:

echo strtotime("2011-05-05 17:29:34");
Headshota
  • 21,021
  • 11
  • 61
  • 82