当前位置: 首页 > news >正文

unicloud云函数时间慢8小时的解决方案

最近在做uniapp+unicloud小程序项目的时候,本地运行的时候一切正常,部署到云端运行的时候,发现保存在数据库中的时间慢了8个小时。

经过查资料才知道,unicloud云函数中使用的时区是utc+0,而标准的北京时间时区应该是utc+8,所以在云函数中使用时间就要特别注意这点。在hbuilderX中本地运行时,使用的是电脑上的时间,所以就会出现上面说的本地运行一切正常,部署到云端慢8个小时。

最简单的解决方案就是直接在获取的时间上加8个小时,当然这种方式本质上是没有多大问题,但是本地测试的时候就会快8个小时,所以治本不治标。那么怎么避免这个问题呢?

获取当前时间

为了快捷开发项目,我在云函数中使用了moment.js时间处理类库,也可以自己去写一个获取时间的函数,这里为了方便演示,我就直接使用库来介绍:

首先引入库:

const moment = require('moment');

使用库获取当前时间:

const time = moment().format('YYYY-MM-DD HH:mm:ss');

上面的方法就可以获取当前的时间,本地没问题,但是云端就会慢8个小时,如果使用new Date()的方式获取,效果是一样的。

兼容本地和云端标准时间

使用new Date().getTimezoneOffset()来判断,如果结果为0就加8小时,如果不为0就正常获取时间,js中的getTimezoneOffset()的意思是方法返回 UTC 时间和本地时间之间的时差,以分钟为单位。

兼容使用(最终方案):

const time = new Date().getTimezoneOffset()==0? moment().add(8, 'hours').format('YYYY-MM-DD HH:mm:ss') : moment().format('YYYY-MM-DD HH:mm:ss');

总结:与其绞尽脑汁的空想为什么会这样,还不如多查阅资料多学习,任何问题总会有解决方案的~加油!!!

相关文章:

  • 前端js实现字符转义和反转义
  • 实时数据库:优势和报价
  • 使用express搭建简单的本地服务器
  • 动手动脑
  • 作为程序员,有哪些神级编程资源呢
  • md5加密
  • 闭包得从底层理解
  • Linux wget auto login and backup database
  • Vue组件里的data为什么是函数,而不是对象
  • webpack的理解和使用
  • Building a RESTful Web Service(转)
  • Uncaught SyntaxError: Unexpected token ‘<‘完美解决
  • oVirt (Open Virtual) 之 VDSM 学习笔记 (二) 流程追踪
  • 完美解决[webpack-cli] Unable to load ‘@webpack-cli/serve‘ command
  • HTTP相关概念
  • python3.6+scrapy+mysql 爬虫实战
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • flask接收请求并推入栈
  • Linux CTF 逆向入门
  • vue-router的history模式发布配置
  • 读懂package.json -- 依赖管理
  • 对JS继承的一点思考
  • 对象引论
  • 给Prometheus造假数据的方法
  • 关于使用markdown的方法(引自CSDN教程)
  • 记一次用 NodeJs 实现模拟登录的思路
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 排序算法学习笔记
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 嵌入式文件系统
  • 使用Swoole加速Laravel(正式环境中)
  • 我的业余项目总结
  • 用mpvue开发微信小程序
  • 阿里云服务器如何修改远程端口?
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Java NIO(一)FileChannel
  • # 飞书APP集成平台-数字化落地
  • # 计算机视觉入门
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #include<初见C语言之指针(5)>
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax,axios,fetch三种ajax请求的区别
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (蓝桥杯每日一题)love
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (算法)N皇后问题
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • 、写入Shellcode到注册表上线
  • .md即markdown文件的基本常用编写语法
  • .NET 4.0中使用内存映射文件实现进程通讯