I have dates in the following format (yyyymmdd, 18751104, 19140722)… what’s the easiest way to convert it to date()…. or is using mktime() and substrings my best option…?
Advertisement
Answer
Use strtotime()
to convert a string containing a date into a Unix timestamp:
<?php // both lines output 813470400 echo strtotime("19951012"), "n", strtotime("12 October 1995"); ?>
You can pass the result as the second parameter to date()
to reformat the date yourself:
<?php // prints 1995 Oct 12 echo date("Y M d", strtotime("19951012")); ?>
Note
strtotime()
will fail with dates before the Unix epoch at the start of 1970.
As an alternative which will work with dates before 1970:
<?php // Returns the year as an offset since 1900, negative for years before $parts = strptime("18951012", "%Y%m%d"); $year = $parts['tm_year'] + 1900; // 1895 $day = $parts['tm_mday']; // 12 $month = $parts['tm_mon']; // 10 ?>