Timur Musharapov Asked:2020-06-18 21:39:42 +0000 UTC2020-06-18 21:39:42 +0000 UTC 2020-06-18 21:39:42 +0000 UTC 在 MySQL 中,日期的写入时间减少了 3 小时 - 如何更正? 772 日期晚 3 小时写入。并且,相应地,结果也是从基地开始的。如何解决?莫斯科时区。 发布 JS 代码: this.$root.end_at = new Date(); this.$root.end_at.setTime(this.$root.end_at.getTime() + (this.test_info[0].time_limit * 60 * 1000)); this.$root.end_at = this.$root.end_at.toISOString().slice(0, 19).replace('T', ' ');``` javascript 3 个回答 Voted Best Answer Nikita Pimoshenko 2020-06-19T16:14:51Z2020-06-19T16:14:51Z 调用该方法时通过new Date()in创建的日期对象将返回一个字符串 in ,如果要与客户端浏览器的时区一起保存,则应使用. 虽然原则上所有这些做法都不正确,虽然问题是整体的,但是经验表明日期应该由服务器管理,除非这些日期是人自己输入的,否则带上通用的UTC要容易得多客户端上的时间戳比客户端的本地时间要排序,以后数据库中的时间混乱。JS.toISOString()UTC.toLocaleString() Timur Musharapov 2020-06-19T19:55:34Z2020-06-19T19:55:34Z 我最终自己这样做了: this.$root.end_at = new Date(); this.$root.end_at.setTime(this.$root.end_at.getTime() - (this.$root.end_at.getTimezoneOffset() * 60000) + (15 * 60 * 1000)); // this.test_info[0].time_limit this.$root.end_at = this.$root.end_at.toISOString().slice(0, 19).replace('T', ' '); Qwertiy 2020-06-19T20:02:44Z2020-06-19T20:02:44Z 该方法toISOString以指定的 UTC 时区返回正常格式的日期。 您不必嘲笑她,从她身上剪下一些东西并替换字母。简而言之,删除这个:.slice(0, 19).replace('T', ' ')。
调用该方法时通过
new Date()in创建的日期对象将返回一个字符串 in ,如果要与客户端浏览器的时区一起保存,则应使用. 虽然原则上所有这些做法都不正确,虽然问题是整体的,但是经验表明日期应该由服务器管理,除非这些日期是人自己输入的,否则带上通用的UTC要容易得多客户端上的时间戳比客户端的本地时间要排序,以后数据库中的时间混乱。JS.toISOString()UTC.toLocaleString()我最终自己这样做了:
该方法
toISOString以指定的 UTC 时区返回正常格式的日期。您不必嘲笑她,从她身上剪下一些东西并替换字母。简而言之,删除这个:
.slice(0, 19).replace('T', ' ')。