gpt4 book ai didi

android - 无法补偿访问mysql时的时差

转载 作者:行者123 更新时间:2023-11-29 06:35:31 24 4
gpt4 key购买 nike

我将日期时间存储在谷歌云mysql中作为CURRENT_TIMESTAMP。我使用 momentjsknex typeCast: 选项(托管在 Google App Engine 中的 Nodejs 服务器)进行访问,并将响应发送回客户端之前将它们转换为毫秒(安卓)。

数据库中的真实日期:2019-01-07 12:37:48

当我将日期转换为 MYSQL 日期格式时,Android 给出的结果:2019-01-07 15:37:48请注意 3 小时的差异。

如何在 android 中进行转换:

public static SimpleDateFormat DB_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
public static SimpleDateFormat DB_FORMAT_UNCHANGED = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
"updated_at", > DB_FORMAT_UNCHANGED.format(milliseconds);
"updated_at", > DB_FORMAT_UNCHANGED.format(milliseconds);//giving similar inaccurate result

问题:如何解决这个问题,无论我的应用用户前往世界各地,都不会影响日期的准确性,因为减去 +3 GMT 偏移量效率不高

编辑:在服务器访问期间如何在knex config内进行转换:

const config = {
user: 'user' ,
password: 'pwpw' ,
database: 'dbdb' ,
typeCast: function (field, next) {
if (field.type === 'JSON') {
return (JSON.parse(field.string()));
}
if (field.type === 'TINY' && field.length === 1) {
return (field.string() === '1');
}
if (field.type === 'DATETIME') {
return (moment(field.string()).valueOf());
}
return next();
}
};

最佳答案

MYSQL 返回没有时区偏移的 DATETIME 列值。因此,当客户端解释它们时,它们将被读取为客户端时区的本地时间。

您可以使用 TIMESTAMP 列类型来始终使用时区解释您的时间,并获得始终一致的 unix 时间戳值,即使客户端的时区不同。

关于android - 无法补偿访问mysql时的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54077727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com