问题描述
我一直在尝试解决从 Amazon API 保存的数据库数据的问题。数据是使用 cron 作业获取的,预定义的日期范围从上一年到 2021 年 6 月。 我的问题是,我无法使用 Laravel 碳日期获得准确的结果。我不确定我到底做错了什么。在某些日期范围内,我可以获得准确的结果,但是当我更改日期时,结果不正确。因此,例如,当我查询 6 月 1 日至 6 月 30 日的数据时,我可以获得确切的结果,并且可以通过使用相同的日期范围比较结果来确认,当我直接从 Amazon API 获取数据时,但是当我更改它时假设到 6 月 5 日至 6 月 22 日,结果不再准确。我怀疑这是因为我使用了错误的日期格式,但老实说我不知道要使用的正确格式。我尝试了很多格式,但都失败了。这是从亚马逊返回的示例日期格式
- 2021-06-18T14:35:33+00:00
- 2021-06-18T15:08:11+00:00
默认情况下,laravel 的时区在配置文件中全局使用 'timezone' => 'UTC'
。
我的用户住在德国柏林,所以我在查询数据库时使用 Europe/Berlin
我尝试了以下方法:
$start = Carbon::parse("$from Europe/Berlin")->tz('UTC')->format('Y-m-d H:i:s');
$end = Carbon::parse("$to Europe/Berlin")->endOfDay()->tz('UTC')->format('Y-m-d H:i:s');
然后我用它来查询表,类似
->whereBetween('purchase_date',[$start,$end])
我也尝试格式化从亚马逊返回的日期
Carbon::parse($value['date'])->format('Y-m-d H:i:s')
并尝试按原样保存(意思是只保存到字段,字段类型是日期时间)
我的问题是,
- 如何使用 laravel carbon 格式化日期以获得准确的结果
- 目前我的默认用户居住在柏林/德国,如果添加了来自不同地点和时区的用户,您如何动态调整日期格式?
- 用户的日期(timepicker)基于本地日期,这可能是我无法获得准确结果的原因吗?
更新:
在比较了 2020-2021 年的月度时间范围(前 --month=June --year=2021 ,--month=march --year=2020)后,我注意到 2020 年和 2021 年的六月有不一致的结果。其他月份完全没问题。这让我再次困惑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)