laravel的时间问题?

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
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年前 评论

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