Background个
我的应用程序使用UTC作为数据库的时区,这是应该的.
目前我的所有用户都是本地用户,但我将在许多不同的时区拥有用户.
我的应用程序中的大多数东西都只是日期,所以我只是将它们存储为日期,而不go 管它.
然而,我读到了this advice in the carbon docs,我想我应该把我的日期换成时间戳,并存储适当的精确度,不管我是否需要它.
我的大多数约会对象都没有真正的时间概念,甚至在概念上也是如此,尽管我理解并在理论上同意上述联系的前提.
My Question个
我将使用我自己的时区作为这个问题的示例.现在是夏令时,我们在中部夏令时,比协调世界时晚5个小时.
几周前,我们在CST,比UTC晚6个小时.
我的问题是.假设我在2个月前在数据库中存储了一个日期,该日期与世界标准时间相差6小时.现在我正在从数据库中读取日期,但现在是CDT,只有5小时的差异.Carbon知道这一点并进行相应的处理吗,或者我总是会遇到与夏令时有关的时区问题.
我担心的是,我的很多日期只是日期,它们实际上没有时间成分,所以它们最终会是2023-04-07 05:00:00
或2023-02-01 06:00:00
左右.在接近午夜的情况下,计算错误可能会完全更改日期,而错误转换的日期可能不会被注意到.
So what's the solution?个
它是否将偏移量存储在日期字段中,以便始终与日期一起存储?处理这一问题的公认方法是什么,或者说最合乎逻辑的方法是什么?
如果上面的方法是正确的,那么它看起来像是Laravel有$table->timestampsTz()
个method,所以我需要将我所有的日期和时间戳转换成时间戳Tz列……然后我假设一定有某种方法告诉laravel在写入created_at
和updated_at
列时包括偏移量,或者可能它只是自动知道.
在我浪费更多的时间在这之前,试着确定这是正确的方法.
另外,看起来MySQL没有存储时区信息,所以我真的不知道如何解决这个问题.
一开始,我认为只需将日期字段更改为时间戳就相当简单,但我读得越多,事情就变得越复杂.