2

我想在 Codeigniter1373892900000中转换。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 似乎将时区默认为 Europe/Berlin。

谁能帮我纠正我可能犯的任何错误?

4

5 回答 5

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 版。

于 2013-07-13T14:50:53.200 回答
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
于 2013-07-13T14:48:36.187 回答
0

似乎使用 DATE_ATOM 格式调用standard_date可以对您进行排序:

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

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

于 2013-07-13T15:01:40.080 回答
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

于 2013-07-14T03:19:29.867 回答
0

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

显示全年会使问题更加明显,因为您会看到一年为 45,506。

于 2013-07-15T20:45:12.293 回答