首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图在不同的时区获取碳时间戳

试图在不同的时区获取碳时间戳
EN

Stack Overflow用户
提问于 2021-12-08 06:22:17
回答 1查看 795关注 0票数 1

我们使用MySQL DB运行了一个Laravel应用程序。DB由许多与不同主题相关的条目组成。这样做的想法是,每个项目都有自己的时区,并输出相应格式化日期的相关条目。因此,为了能够更改时区,为了兼容起见,所有条目都存储在UTC时区中(app默认时区也被设置为UTC )。问题是,例如,我们需要获得今天的条目,但是在项目的时区中,不是UTC。我们使用碳,但它只是格式的输出日期,并仍然比较它们在UTC时区。例如,在世界协调时,12月7日,22.32日有一个条目。但根据欧洲/莫斯科的说法,这是在12月8日,01.32,它应该被认为是今天的进入与欧洲/莫斯科时区的一个项目。尽管如此,即便莫斯科给出了时区,碳仍将其视为昨日的入场券(根据UTC的说法)。我们在查询中使用whereDate:

代码语言:javascript
复制
whereDate( 'created_at', Carbon::now($project->timezone)->startOfDay() )

问题是碳在碳::现在(‘UTC’)和碳::现在(‘欧洲/莫斯科’)之间没有区别。如果你比较它们,它会给出零值:

代码语言:javascript
复制
$tz1 = Carbon::now('UTC');
$tz2 = Carbon::now('Europe/Moscow');
echo tz1->diffInHours(tz2) //0

我错过了什么?我该怎么做才好呢?

EN

回答 1

Stack Overflow用户

发布于 2021-12-08 06:57:17

$tz1$tz2都有时区信息,并且都包含now()时间的信息。这就是为什么没有区别。使用shiftTimezone()检索后,更改时区数据以使其正常运行。所以

代码语言:javascript
复制
$tz1 = Carbon::now('UTC');
$tz2 = Carbon::now('Europe/Moscow')->shiftTimezone('UTC');
echo tz1->diffInHours(tz2) //should be appropriate 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70270775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档