如何在codeigniter中将时间戳转换为日期

时间:2013-07-13 14:16:26

标签: php codeigniter

我想在Codeigniter中将1373892900000转换为Monday 2013/07/15 8:55 AM

但是,通过使用我编写的函数转换时间戳,我一直收到完全不同的结果,请注意:我需要根据不同的时区更改日期,这就是我想用这种方式编写的原因

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;

    }

上述功能的结果是:Sat, 08 Dec 06 01:40:00 +0000

如果我没有将date_default_timezone_set('UTC');放入上述功能,我会将此日期改为Sat, 08 Dec 06 02:40:00 +0100。我的codeigniter似乎默认为欧洲/柏林的时区。

有人可以帮我纠正我可能犯过的任何错误吗?

5 个答案:

答案 0 :(得分:3)

为什么不使用PHP的日期函数?

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

对于不同的时区,请使用DateTime对象:

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

认为应该有效。注意:我知道TimeZone类至少需要PHP版本5.20。

答案 1 :(得分:0)

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

你的格式=格式化你的PHP时间,阅读此页面了解详情。

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

答案 2 :(得分:0)

看起来好像使用DATE_ATOM格式调用standard_date可能会对您进行排序:

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

该格式还有许多其他选项,在链接页面上列举。

答案 3 :(得分:0)

这个如何将时间戳转换为日期非常简单:

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

将时间戳转换为人类可读格式请尝试:

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

如果你想把它转换成这样的格式:2008-07-17T09:24:17Z比使用这个方法

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

有关日期的详细信息: http://php.net/manual/en/function.date.php

答案 4 :(得分:0)

你的时间戳来自客户端的javascript,我猜,因为它似乎是以毫秒为单位。 php时间戳以秒为单位。所以为了得到你想要的答案,首先除以1000。

显示全年会使问题更加明显,因为你会把这一年视为45,506。