解决vue 提交日期格式数据,时间出现时区差的问题
解决vue 提交日期格式数据,时间出现时区差的问题一、错误源:在自定义create_time ,进行前端vue 向后端django 传入数据时,发现{'create_time': [ErrorDetail(string='日期时间格式错误。请从这些格式中选择:YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]。', code='invalid')]}此错
·
解决vue 提交日期格式数据,时间出现时区差的问题
一、错误源:
在自定义create_time ,进行前端vue 向后端django 传入数据时,发现
{'create_time': [ErrorDetail(string='日期时间格式错误。请从这些格式中选择:YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]。', code='invalid')]}
此错误是由于 没有用data格式
二、过程
const d = new Date()
但在用完之后却在后端发现,前端console.log()为中国时间,并且时间当前正确的时间。
不过再次看数据发现差了8小时,于是换了一种写法使用了moment
三、解决
3.1
Moment格式化时间默认格式为当地时区的时间。
如果格式化的结果与当地时间有差值,一般原因是:要格式化的时间带有时间标志,如:UTC 、GMT等。
经过Moment格式化后,会变成时间标志所表示的时区的时间。
此时,只需要改变时间偏移量即可。使用utcOffset()
3.2
例如,要格式的时间中带有GMT标志(GMT是零时区),要格式化为北京时间
import moment from 'moment'
//获取当前时间 此时间其他位置也需要使用
const dtime = new Date()
//定义个变量对处理过的时间寄存
const deposit = handleDatetime(dtime)
//真正使用的东西
Moment(dtime).utcOffset(480).format('YYYY-MM-DD HH:mm:ss');
北京时间东八区时间,比零时区早8个小时(480分钟),所以应该加上480分钟
这样最后存入数据库的时间就与django显示的一致。
四、扩展
在django的Setting base文件,通过将USE_TZ 为false 来设置为中国时间,不然存入数据库时间还是少个时差
更多推荐
已为社区贡献1条内容
所有评论(0)