UniCloud云函数时区问题UTC+0改为UTC+8标准北京时间(newDate问题)

阅读: 评论:0

UniCloud云函数时区问题UTC+0改为UTC+8标准北京时间(newDate问题)

UniCloud云函数时区问题UTC+0改为UTC+8标准北京时间(newDate问题)

uniCloud云端的云函数使用的时区是utc+0,而不是 UTC+8,在云函数中使用时间时需特别注意。云函数在HBuilderX本地运行时,时区则是电脑的时间。在使用“时间戳”时两者没有差异可以规避时区问题,但如果要获取年、月、日、小时要注意时区的差异。

云函数获取时间:new Date( )

首先了解获取年月日时分秒基本方法:

var time= new Date();//获取当前时间给time变量
let year = FullYear() //年
let month = Month() + 1 //月-整数值0(1月)到11(12月)故需要加1。
let day = Date() //日
let hour = Hours() //时
let minute = Minutes() //分
let second = Seconds() //秒

由于服务器时间相差8小时,网上的解决方法就是在小时上直接+8得到当前的小时。

let hour = Hours()+8 

这种方式简单便捷,但是你会发现当服务器时间16点以后+8会导致小时超过24小时没有进入下一天的问题网上的方法是在小时上+8获得本地的小时数这个方法治标不本。
于是在此逻辑基础上我们可以加上IF判断当+8超过24的时候Day加一以此类推即可获得正常的本地时间。

	var Mday=new FullYear(),Month()+1,0).getDate();//获取当月有多少天var y = FullYear();var m = Month() + 1;var d = Date();var h = Hours()+8;if(h>23){h=h-24;d=d+1;if(d>Mday){d=1;m=m+1;if(m==13){m=1;y+1}}}

最终解决方案

为了方便造个轮子~写了个函数方便直接使用
复制即可直接调用,想要返回什么格式直接改return就行了。

	//定义一个GetTime函数GetTime:function(){var time= new Date();//获取服务器当前时间给time变量 例:Fri Aug 20 2021 12:37:42 GMT+0var Mday=new FullYear(),Month()+1,0).getDate();let y = FullYear() //年let m = Month() + 1 //月-整数值0(1月)到11(12月)故需要加1。let d = Date() //日let h = Hours() //时let mm = Minutes() //分let s = Seconds() //秒if(h>23){h=h-24;d=d+1;if(d>Mday){d=1;m=m+1;if(m==13){m=1;y+1}}}m = m < 10 ? ('0' + m) : m;d = d < 10 ? ('0' + d) : d;h=h < 10 ? ('0' + h) : h;mm = mm < 10 ? ('0' + mm) : mm;return (y+'年'+m+'月'+d+'日'+h+':'+mm+':'+s)},var a=GetTime()console.log(a)//2021年8月20日20:37:42

本文发布于:2024-02-04 15:56:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170711063956870.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:北京时间   函数   时区   标准   UniCloud
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23