同一个时区,Php Carbon给出不同的日期。

问题描述 投票:1回答:1

我有以下两种碳方法。为什么它们给我不同的时间值,尽管是同一个时区?

 Carbon\Carbon::today()->timezone('Europe/London')
 => Carbon\Carbon @1587945600 {#3503
       date: 2020-04-27 01:00:00.0 Europe/London (+01:00),
 }

 Carbon\Carbon::today('Europe/London')
 => Carbon\Carbon @1587942000 {#3516
        date: 2020-04-27 00:00:00.0 Europe/London (+01:00),
 }

我知道我在每种方法中添加的时区不同,但我认为两种方法应该产生相同的结果?

timezone php-carbon
1个回答
0
投票

你可以使用 Carbon::today()->shiftTimezone('Europe/London'); 来得到你想要的结果,但首先,看看这个。

echo Carbon::now('Europe/London');
echo Carbon::now()->timezone('Europe/London');

两者的输出都是一样的,因为在两种情况下都是在伦敦,所以是连续的事件(几微秒的差距),用相同的时区来表示。

但是。

Carbon::today('Europe/London');
Carbon::today(); // = Carbon::today('GMT');

代表两个不同的时刻 伦敦的今天(一天的开始)和格林威治标准时间的今天(一天的开始)。而伦敦的一天(夏季)比GMT时区晚1小时开始。

现在,如果你改变今天的GMT时区,你改变的只是时区,而不是时刻,所以你在伦敦是1AM。

© www.soinside.com 2019 - 2024. All rights reserved.