laravel的时间问题?

就不知道为什么,我系统时间是对的,是北京时间,然后我那个配置文件的app.php
已经设置了 timezone = Asia/Shanghai,
然后不知道为啥我
echo date(‘Y-m-d’, time());
打印出来的日期要多一天,不知道为啥?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
Mutoulee
最佳答案

date() 是PHP函数,与你config/app.php中的timezone = Asia/Shanghai没关系。

你试试先date_default_timezone_set("Asia/Shanghai");

然后 echo date(‘Y-m-d’, time());看看。

Laravel中时间尽量用Carbon处理,比如:now()->format('Y-m-d')

1年前 评论
Rache1 1年前
Mutoulee (作者) 1年前
讨论数量: 9
Mutoulee

date() 是PHP函数,与你config/app.php中的timezone = Asia/Shanghai没关系。

你试试先date_default_timezone_set("Asia/Shanghai");

然后 echo date(‘Y-m-d’, time());看看。

Laravel中时间尽量用Carbon处理,比如:now()->format('Y-m-d')

1年前 评论
Rache1 1年前
Mutoulee (作者) 1年前

那就先清配置的缓存看看

1年前 评论

一:检查本脑本地时间。
二:清除config配置缓存。
三:把当前时区一起打印出来,看下是否有改到。

1年前 评论

我8.5的也无效,重写了日期序列化解决

class BaseModel extends Model
{
    /**
     * 重写日期序列化
     * @param DateTimeInterface $date
     * @return string
     */
    protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format(Carbon::parse($date)->toDateTimeString());
    }
}
1年前 评论

两个选择

1. 修改默认时区

time() 是PHP原生的 所以要改文件 php.ini 里的设定

date.timezone = "Asia/Shanghai"

2. 每次用到时间之前都要选择时区

我个人认为很容易忘记 所以不建议此

date_default_timezone_set("Asia/Shanghai");
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!