首页 > 解决方案 > 在多个平台上处理不同的日期格式

问题描述

我有一个严重依赖于timestamps(跟踪用户何时启动计时器、何时暂停、何时从暂停返回、何时开始任务、何时暂停任务、何时恢复任务、何时完成一项任务,当他们停止计时器时)。

在某些地方,我必须进行计算。例如,活动任务时间是任务完成时间-任务开始时间-该任务每次暂停的结束和开始的差值之和。

当我开发这个应用程序时,我使用了我能找到的最标准的日期格式:

YYYY:MM:DD HH:MM:SS - 2021:03:08 14:31:50

在所有 android 手机、linux 和 windows PC 上,我已经测试过这个应用程序没有问题,但是在 Apple 设备(Mac 和 iPhone)上,它无法将此日期时间字符串转换为 JS 日期时间对象,因此涉及的所有计算日期时间,我得到 NaN(日期转换不正确时非常常见的错误)。

幸运的是,我正在使用基于 的自定义 MySQL 工具sqlalchemy,并且在早期开发阶段我编写了一个函数来定义数据库返回的日期格式,因此我将其更改为以下内容:

DD/MM/YYYY HH:MM:SS - 03/08/2021 14:35:19

这解决了主要问题 - 在 Apple 设备上执行日期时间计算,但是现在我遇到了更大的问题 - 写入数据库。数据库无法识别上述格式,导致以下错误:

(pymysql.err.OperationalError) (1292, "Incorrect datetime value: '08/03/2021 14:08:45' for column `WM_4`.`_carts`.`_order_date` at row 1")
[SQL: UPDATE _carts SET _order_date = %s, _status_id = %s, _to_site = %s, _user_id = %s WHERE _id = %s;]
[parameters: ('08/03/2021 14:08:45', 4, 7, 9, 1)]

我可以通过创建另一个将日期转换回以前接受的格式的函数来解决这个问题,但这看起来就像在圈子里跑来跑去,在我看来不是一个可接受的解决方案。

当然有更好的方法来解决这个问题。我确信其他人在使用 Apple 设备时遇到过日期时间格式问题,所以我想知道他们是如何解决的。

标签: javascriptiosmysqldatetimedatetime-format

解决方案


推荐阅读