34

How to convert human-friendly date to milliseconds since the unix epoch?

Cœur
  • 37,241
  • 25
  • 195
  • 267
stunnaman
  • 911
  • 3
  • 13
  • 19

3 Answers3

57
strtotime($human_readable_date) * 1000
Nikola K.
  • 7,093
  • 13
  • 31
  • 39
chaos
  • 122,029
  • 33
  • 303
  • 309
18

Pay attention: strtotime() * 1000 is ok to have seconds expressed as milliseconds!

The right answer is that it is not possible to have a millisecond precision on date/time functions in PHP. The precision of Unix Epoc based functions is only of 1k milliseconds, aka second :)

Using the suggested answers you don't have milliseconds, but seconds expressed as number of milliseconds.

If you are aware of this, and you don't really need a millisecond precision then the answers given are ok, but the question was wrong :)

drAlberT
  • 22,059
  • 5
  • 34
  • 40
15

You're looking for strtotime.

Sample Usage:

$myvar = strtotime("7 October 2009");

That gives you seconds since the Unix epoch, so you want:

$myvar = strtotime("7 October 2009") * 1000;

Watch out for the fact that strtotime "guesses" what you mean (how should it interpret "12-08-2009"? probably as 8th December, but it might equally validly - and being a Brit, thoroughly sensibly - guess 12th August). If you know the format in advance, use strptime.

Dominic Rodger
  • 97,747
  • 36
  • 197
  • 212
  • This is a terrific answer as it also goes into detail on the date formatting. +1 –  Sep 07 '19 at 18:37