bartek
bartek

Reputation:

Datetime To Unix timestamp

Is there anyone sitting on a PHP function to convert a date of format 0000-00-00 00:00:00(datetimesql) to unix timestamp?

Upvotes: 25

Views: 59573

Answers (6)

John Conde
John Conde

Reputation: 219934

To do this in PHP 5.2 you can do this:

$datetime = new DateTime();
echo $datetime->format('U');

A newer way to do this as of PHP 5.3 is:

$datetime = new DateTime();
echo $datetime->getTimestamp();

Upvotes: 50

devasia2112
devasia2112

Reputation: 6044

I have a solution for you right here:

/* From MySQL datetime to Unix Timestamp 2003-12-30 23:30:59 -> 1072834230 */
function convertMysqlDateTimeToUnixTimeStamp($date) {
    $yr=strval(substr($date,0,4));
    $mo=strval(substr($date,5,2));
    $da=strval(substr($date,8,2));
    $hr=strval(substr($date,11,2));
    $mi=strval(substr($date,14,2));
    $se=strval(substr($date,17,2));
    return mktime($hr,$mi,$se,$mo,$da,$yr);
}

Upvotes: 6

johnboiles
johnboiles

Reputation: 3524

Encapusulating wvanbergen's solution into a function (for your convenience)

//Convert SQL datetime to unixtime -- by johnboiles
function datetimeToUnixtime($datetime){
    $result = mysql_query("select unix_timestamp('$datetime')");
    $unixtime = mysql_fetch_array($result);
    return $unixtime[0];
}

Upvotes: -3

ceejayoz
ceejayoz

Reputation: 180176

@bartek - As you noted, PHP's strtotime function is perfect for this. It can handle most common date formats, including strings like "tomorrow" or "+5 months".

Upvotes: 10

wvanbergen
wvanbergen

Reputation: 2324

Another option as you have tagged this question with SQL: the MySQL functions FROM_UNIXTIME and UNIX_TIMESTAMP -> MySQL manual

SELECT UNIX_TIMESTAMP(datetime_column) FROM table

This usually is faster than a PHP function call.

Upvotes: 27

Alnitak
Alnitak

Reputation: 340055

Use strptime() to parse the time and turn it into a structured array.

Then pass the results of that into the mktime() function to get a UNIX timestamp.

Upvotes: 5

Related Questions