0

我现在在 Codeigniter 中的时间有问题。我在codeigniter中使用时间跨度函数我必须获取当前时间,它现在返回错误的当前时间。我在我的电脑上的日期(截至目前)是 2013-07-04 3:21 PM,但是当我这样做时:

$now = time(); 
$human = unix_to_human($now);
echo $human;

输出为 2013-07-05 12:20 AM。这是为什么?

4

3 回答 3

0

它返回网络服务器时间,而不是您的电脑时间。尝试将时区设置为您所在的位置。

于 2013-07-04T07:55:31.710 回答
0

将此代码放在 index.php(引导文件)的顶部。

if( ! ini_get('date.timezone') )
{
   date_default_timezone_set('Asia/Dhaka');
} 

而不是“亚洲/达卡”使用您自己的时区。应该做的工作。

于 2013-07-04T07:59:43.977 回答
0

我已经在 CodeIgniter 中使用这样的 Helper 类解决了这个问题:

<?php

namespace App\Helpers;

use CodeIgniter\I18n\Time;

class DateHelper {

    public static function getTime($dateString = 'now'){
        
        $time = new Time($dateString);
        if(!$time->getDst()){
            $time = $time->subHours(1);
        }
        return $time;
    }

    public static function getNowString(){
        return static::getTime()->format('Y-m-d H:i:s');
    }

}

我基本上使用这个功能:

    /**
     * ( function from CodeIgniter\I18n\Time )
     * Are we in daylight savings time currently?
     *
     * @return boolean
     */
    public function getDst(): bool

要检查我们当前是否处于夏令时,如果是,我减去 1 小时。这对我有用,我的时区是默认使用的 Europe/Lisbon,因为我通过更改以下变量在 app/config/App.php 中对其进行了配置:

 public $appTimezone = 'Europe/Lisbon';.
于 2020-11-26T22:16:22.837 回答