led
led

Reputation: 1684

how to convert timestamp to date in codeigniter

I want to convert 1373892900000 to Monday 2013/07/15 8:55 AM in Codeigniter.

However, I keep receiving a totally different result by converting the timestamp using the function i have written, please note:I need to change the dates according to different timezones, that is why I want to write it this way:

public function time_convert($timestamp){

        $this->load->helper('date');

        date_default_timezone_set('UTC');

        $daylight_saving = TRUE;
        $timezone = "UM4"; //toronto or new york timezone
        $time = gmt_to_local($timestamp, $timezone, $daylight_saving);

        $final_time = standard_date('DATE_RFC822', $time);  
        return $final_time;

    }

Result from the above function is: Sat, 08 Dec 06 01:40:00 +0000

And if I don't put date_default_timezone_set('UTC'); in the above function, I get this date instead Sat, 08 Dec 06 02:40:00 +0100. My codeigniter seems to default the timezone to Europe/Berlin.

Can anyone please help me correct any of the mistakes I might have made?

Upvotes: 2

Views: 14646

Answers (5)

Jerry
Jerry

Reputation: 3586

Your timestamp is coming from javascript on the client, I would guess, because it appears to be in milliseconds. php timestamps are in seconds. So to get the answer you want, first divide by 1000.

Showing the full year would have made the issue more obvious, as you would have seen the year as 45,506.

Upvotes: 0

MJ X
MJ X

Reputation: 9044

This how to covert timestamp to date very simple:

echo date('m/d/Y', 1299446702);

to convert timestamp to human readable format try this:

function unix_timestamp_to_human ($timestamp = "", $format = 'D d M Y - H:i:s')
{
   if (empty($timestamp) || ! is_numeric($timestamp)) $timestamp = time();
   return ($timestamp) ? date($format, $timestamp) : date($format, $timestamp);
}

$unix_time = "1251208071";

echo unix_timestamp_to_human($unix_time); //Return: Tue 25 Aug 2009 - 14:47:51

if you want to convert it to a format like this: 2008-07-17T09:24:17Z than use this method

<?php
 $timestamp=1333699439;
 echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>

for details about date: http://php.net/manual/en/function.date.php

Upvotes: 0

SharkofMirkwood
SharkofMirkwood

Reputation: 12611

Why not just use PHP's date function?

public function time_convert($timestamp){
   return date('l Y/m/d H:i', $timestamp);
}

For different timezones use a DateTime object:

public function time_convert($timestamp, $timezone = 'UTC'){
    $datetime = new DateTime($timestamp, new DateTimeZone($timezone));
    return $datetime->format('l Y/m/d H:i');
}

Think that should work. Note: I tihnk you need at least PHP version 5.20 for the TimeZone class.

Upvotes: 3

hd1
hd1

Reputation: 34657

Appears as though an invocation of standard_date with the DATE_ATOM format may sort you:

echo unix_to_human(time(), true, 'us'); # returns 2013-07-12 08:01:02 AM, for example

There are a whole host of other options for the format, enumerated on the linked page.

Upvotes: 0

denyptw
denyptw

Reputation: 90

<?php
$time_str=1373892900000;
echo gmdate("fill with your format", $time_str);
?>

your format = format your time in php, reading this page for details.

http://php.net/manual/en/function.date.php
http://php.net/manual/en/function.gmdate.php

Upvotes: 0

Related Questions