如何解决Flutter改变了我从后端收到的时间
当我从后端发送日期时,它具有格式,但是当我收到日期时,格式和时间会发生变化。
我将flutter用作前端,将nodeJS用作后端,将MYSQL用作DB。 在我的后端,我有以下代码
var req_date = moment (Date.now ()). tz ('America / Mexico_City'). format ('YYYY-MM-DD HH: mm: ss');
然后我将其作为时间戳保存到我的MSQL数据库中,并且在数据库中看起来像这样
2020-08-22 03:02:53
因此,我从flutter向我的api发出了一个请求,然后接收它并将请求发送到我的数据库,该数据库返回以下结果
Sat,August 22,2020 03:02:53 GMT-0500 (GMT-05: 00)
然后,我将其作为JSON发送并在抖动中接收。
但是当我在颤动下打印时。我的Flutter控制台向我显示了以下内容
Requested_date: 2020-08-22T08: 02: 53.000Z
问题出在我的后端时间是3:02,但是当我颤抖地收到它的时候是8:02。 我认为这与UTC时区有关,但我不知道如何解决,因为我想与后端时间相同。
解决方法
我终于能够解决我的问题。
我如下解决了它: 我首先接受了bd请求,并将其修改为ISO 8601格式,然后将其转换为字符串,然后将其发送给flutter。 然后,当我在Flutter上收到它时,便能够捕获并显示响应。
1。转换为ISO 8601。
我首先向数据库发出请求,然后将结果转换为ISO 860。
var reqDateIsoString = new Date(bdRequest[0][i].date).toISOString();
2。给出本地格式
我没有使用toLocale方法,因为我不想更改相对于服务器的日期,因为我的目标是显示历史记录,因此必须将其作为常量来处理。因此,我将“ moment”库用于nodeJS。
npm install moment
var moment = require('moment');
var reqDateWithFormat = moment(reqDateIsoString).format('YYYY-MM-DDTHH:mm:ss');
3。转换为字符串。
最后一步,我将数据转换为字符串,以防止Flutter将时间更改为UTC。
var reqDateString = String (reqDateWithFormat);
然后我将其发送给Flutter,并根据需要将日期显示为字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。