laravel 和 vue.js 之间惯性通信时间的最佳方式

问题描述 投票:0回答:3

我正在使用laravel惯性和vue js,现在我面临一个问题,laravel和vue js之间的时间传输总是将自己转换为UTC,这不是我想要的。

示例:当服务器端在

10am
创建日期时间响应时,我使用UTC+8时区,但当我在客户端检查时,它转换为2am。此外,当我提交现场时间为10am的请求时,它会将其自身转换为2am。您能否帮助建议在服务器端和客户端上使用它的方法。

javascript laravel vue.js inertiajs
3个回答
0
投票

@TomasLucena 我读了一篇文章/答案,建议使用 UTC 进行通信并根据客户端的系统时区手动转换它,因此我通过将时间从 UTC 转换为 UTC+8 并将其保存到数据库来实现这种方法。


0
投票

不确定这是否有帮助,但我遇到了这个问题和上面托马斯·卢塞纳的评论中提到的相同类型的问题。由于时区变化,日期/时间与使用 vue 日期选择器输入的内容不断变化。

最终使用 vue datepicker 'model-type' 设置并删除时区和 utc 设置解决了这个问题。将格式指定为: model-type="yyyy-MM-dd HH:mm:ss" 后,一切开始正常工作。例如:

<VueDatePicker id="form.date1 v-model="form.date1" model-type="yyyy-MM-dd HH:mm:ss"
 :enable-time-picker="true" :is24="false" />

我也不再需要在服务器上用Carbon解析请求数据,因为数据已经以mysql日期时间格式返回。

但是,如果您使用 Laravel 数据验证,则指定的日期格式与 vue 日期选择器不同。在服务器上,使用验证“date_format:Y-m-d H:i:s”

无论如何,我希望这对任何使用 vue 日期选择器惯性遇到时区问题的人有所帮助


0
投票

同样的问题。

服务器到客户端:我使用

toAtomString
函数将Carbon对象转换为字符串,因此Inertia没有什么可转换的,然后客户端使用Momentjs为人类格式化。

客户端到服务器:我根本不使用客户端日期。

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