您好,登录后才能下订单哦!
今天小编给大家分享的是vue DatePicker日期选择器时差8小时问题如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。
vue中使用element-ui中的日期选择器组件时,会造成时区差。
在向数据库中做保存时发现传输的时间参数和前端控件所选时间端不匹配(相差8小时), 调试发现与后端接口没有问题,是控件本身的原因。
1.牵扯到国际时间和北京时间
2.中国国家标准时间是东经120°(东八区)的地方时间,同格林威治时间(世界时)整整相差8小时
解决方法:
设置value-format 属性, 精确到时间段value-format=“yyyy-MM-dd HH” 即可.
eg:
<el-table-column label="发证日期" align="center" min-width="150"> <template slot-scope="scope"> <el-form-item :prop="'tableData.'+scope.$index+'.fzrq'" :rules="ZZrules.fzrq"> <el-date-picker :picker-options="FZTime" v-model="scope.row.fzrq" @change="startTimeStatus($event)" type="date" value-format="yyyy/MM/dd" format="yyyy/MM/dd" placeholder="选择日期" clearable> </el-date-picker> </el-form-item> </template> </el-table-column> <el-table-column label="证书有效期" align="center" min-width="150"> <template slot-scope="scope"> <el-form-item :prop="'tableData.'+scope.$index+'.zsyxq'" :rules="ZZrules.zsyxq"> <el-date-picker :picker-options="YXQTime" v-model="scope.row.zsyxq" type="date" @change="endStatus($event)" value-format="yyyy/MM/dd" format="yyyy/MM/dd" placeholder="选择日期" clearable> </el-date-picker> </el-form-item> </template> </el-table-column>
3.温馨提示:
在对日期做校验时同样存在一个问题,校验格式会提示·····不是日期格式的一串英文,这是因为前端与后台格式不统一造成的,value-format和format格式要保持一致,而且有可能你的时间已经是string类型,并不一定是date类型。要仔细检查,我是被坑到了···
我的校验文件:
fzrq: [ { type: "string", required: true, message: "发证日期不可为空", trigger: "change", pattern: /.+/, }, ], zsyxq: [ { type: "string", required: true, message: "证书有效期不可为空", trigger: "change", pattern: /.+/, }, ],
接手的vue项目中使用了moment模块,导致出现了一些问题。
北京时间 = UTC/GMT+8小时(东八区) ,世界标准时间加上8小时就是北京时间,今天踩到一个大坑,后端传回来的时间戳是世界时间转成的,当我用当前时间的时间戳减后端传回的时间戳去计算时长的时候发现不对劲,明明时长只有40分钟左右,计算出来的时长却是8小时40分钟,后面才知道,后端传回来的时间戳是世界时间转成的。
所以我前端要把当前时间戳减去8小时的时差再去减后端传回来的时间戳。这样计算出来的时间才是正确的。
关于vue DatePicker日期选择器时差8小时问题如何解决就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。