排行榜 统计
  • 建站日期:2020-07-15
  • 文章总数:63 篇
  • 评论总数:1436 条
  • 分类总数:6 个
  • 最后更新:2023年03月28日

关于服务器时区问题的完美解决方法

本文阅读 4 分钟
首页 精品教程 正文

关于服务器时区问题的完美解决方法

相信很多小伙伴在开发时都需要用到时间戳,而这个时间戳获取的服务器事件,有部分服务器可能直接获取到的时间就是北京时间,但是部分服务器获取到的服务器时间会和本地时间不同,特别是一些云开发服务器,微信云开发的服务器就是比北京时间要晚8个小时,这主要是因为服务器时区的不一样。关于时区的介绍就不多说了,大家可以自己去搜索看看。微信云开发的时区修改很简单,改一下环境变量就是,可是有一些服务器改不了时间变量怎么办呢,下面我来给大家介绍一下。

首先是确定时区,也就是校准时间,一些服务器的时间与本地时间相差8小时,但是有可能部分相差的时间不一样,所以我们首先将所有时间转化为UTC时间(格林威治时间),这个时区与北京时间相差正好是8个小时,然后在这个时间基础上加上8个小时就行了,如下:


let date = new Date();
let timezoneOffset = date.getTimezoneOffset();
let time = date.getTime() + timezoneOffset * 60 * 1000 + 480 * 60 * 1000;

getTimezoneOffset()这个方法就是用来获取当前时间与UTC时间的一个差值(单位为分钟),然后得到后我们在加上8个小时就可以了,随便提一下微信云开发服务器修改时区的方法:

直接点击云函数配置,然后新增环境变量:

TZ=>Asia/Shanghai

如下图(图片网上找的):
配置云函数时区

格式化时间为yyMMddHHmmssSSS格式

这个是最近用到的一个时间戳格式,看网上封装的有点乱,给大家分享一下:

format = () => {
    let date = new Date();
    let timezoneOffset = date.getTimezoneOffset();
    let time = date.getTime() + timezoneOffset * 60 * 1000 + 480 * 60 * 1000;
    let myDate = new Date(time);
    let y = myDate.getFullYear();
    let M = myDate.getMonth() + 1;
    let d = myDate.getDate();
    let H = myDate.getHours();
    let m = myDate.getMinutes();
    let s = myDate.getSeconds();
    let S = myDate.getMilliseconds();
    if (M < 10) {
        M = '0' + M
    }
    if (d < 10) {
        d = '0' + d
    }
    if (H < 10) {
        H = '0' + H
    }
    if (m < 10) {
        m = '0' + m
    }
    if (s < 10) {
        s = '0' + s
    }
    if (S < 100 && S > 9) {
        S = '0' + S
    }
    if (S < 10) {
        S = '00' + S
    }

    return y + M + d + H + m + s + S

};

这样直接使用format()就可以获取服务器北京时间且格式为yyMMddHHmmssSSS的时间戳了,可以根据需求自己制定return值。

大致就这些了吧,近期安好资源屋小程序可能会更新,将会支持密钥查找资源,广告查看资源,关键词查看资源,支付查看资源等功能,同时会支持分享带参数的小程序海报分享,这样可以直接在资源站上放上小程序海报,用户扫码直接通过相关的方式进入小程序获取资源,又一个变现的好办法。哈哈哈哈。

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.i4qq.com/jpjc/gyfwqsqwtdwmjjfa.html
uniapp接入支付宝小程序登录及订阅消息教程
« 上一篇 10-12
小程序利用云函数发送电子邮件功能详解
下一篇 » 03-21

发表评论

成为第一个评论的人

作者信息

热门文章

标签TAG

热评文章