微信小程序 时间戳与日期格式的转换

1. 微信小程序 时间戳与日期格式的转换

微信小程序中的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。例如现在北京时间2015-12-31 17:00:00的时间戳是1451552400,就是指从北京时间1970-01-01 08:00:00到2015-12-31 17:00:00已经过去了1451552400秒。

在编程语言中使用时间戳的好处:

(1)时间戳没有时区概念,比如如果用'2015-12-31 17:00:00'这么一个字符串表示时间的话,北京时间和美国时间是不一样的,但是用时间戳1451552400来表示的话,那就是一定是唯一的时间,不会有歧义;

(2)时间戳在编程语言中一般是长整形数据类型,无论何种编程语言都能认识时间戳,如果用字符串表示时间,还需要转换。

1.1. 获取昨天,今天,明天的xx-xx-xx格式的日期

微信小程序picker 日期选择中经常要用到 年-月-日 格式的时间,写下来方便以后使用。

javascript 复制代码
//时间的格式为 xxxx-xx-xx 即 年-月-日, 小程序picker中经常可以用到
//昨天的时间
var day1 = new Date();
day1.setTime(day1.getTime()-24*60*60*1000);
var s1 = day1.getFullYear()+"-" + (day1.getMonth()+1) + "-" + day1.getDate();
 
//今天的时间
var day2 = new Date();
day2.setTime(day2.getTime());
var s2 = day2.getFullYear()+"-" + (day2.getMonth()+1) + "-" + day2.getDate();
 
//明天的时间
var day3 = new Date();
day3.setTime(day3.getTime()+24*60*60*1000);
var s3 = day3.getFullYear()+"-" + (day3.getMonth()+1) + "-" + day3.getDate();

1.2. 获取前一天时间

微信小程序获取前一天时间。

javascript 复制代码
 that.getDeadline("2025-04-16 17:35:15");

getDeadline: function (time) {
    var date1 = new Date(time + ":000");
    var timeStamp1 = date1.getTime();
    var date2 = new Date(timeStamp1);
    date2.setTime(date1.getTime() - 24 * 60 * 60 * 1000);
    var year = date2.getFullYear()
    var month = date2.getMonth() + 1
    if (month < 10) {
      month = "0" + month
    }
    var day = date2.getDate()
    if (day < 10) {
      day = "0" + day
    }
    var hour = date2.getHours()
    if (hour < 10) {
      hour = "0" + hour
    }
    var minite = date2.getMinutes();
    if (minite < 10) {
      minite = "0" + minite
    }
    var second = date2.getSeconds();
    if (second < 10) {
      second = "0" + second
    }
    var time2 = year + "-" + month + "-" + day + ' ' + hour + ":" + minite + ":" + second;
    return time2;
  },

1.3. 时间转换为时间戳

(1)方法一

javascript 复制代码
   var date = new Date("2022-12-04 17:15:53:555");
    // 有三种方式获取
    var time1 = date.getTime();
    var time2 = date.valueOf();
    var time3 = Date.parse(date);
    console.log(time1); //1670145353555
    console.log(time2); //1670145353555
    console.log(time3); //1670145353000

(2)方法二

javascript 复制代码
var time = '2020-04-01 00:00:00';
var repTime = time.replace(/-/g, '/');//用正则主要是把"2020-04-01 00:00:00'"转换成"2020/04/01 00:00:00'"兼容ios
console.log("返回时间:" + repTime);
var timeTamp = Date.parse(repTime);
console.log("返回时间戳:" + timeTamp)

1.4. 订单倒计时实现

1.4.1. 实现思路:

求出发起拼团时间与拼团结束时间的时间差

再将时间差格式化得到我们想要的格式如:

时间每秒递减使用了 setTimeout(this.setTimeCount,1000);这个函数,让这个函数每隔一秒执行一次。

1.4.2. 实现中的难点

若是要实现单个倒计时如60s发送验证码倒不是很难,难的是多条倒计时。

不同的订单下单时间是不一样的时间差time也就不一样,所以当初在这卡了很久,后来想通一切才觉得原来如此。

1.4.3. 实现方法

后台计算出时间前端直接获取时间差,当时为了不影响项目进度我们用的就是这个方法,真是苦了那个些后台的兄弟还得迁就我这个菜鸟。

获取这个时间差time后我们就可以将它处理后放入数组循环。这样做的好处是前端不用将time作为一个属性添加到原数组中。

1.4.4. 示例代码

(1)timeCount.wxml

javascript 复制代码
<view class="TimeSeond">{{timeSecond}}</view>

(2)timeCount.js

javascript 复制代码
Page({
  data: {
    timeSecond: '', //倒计时
  },
  onLoad() {
    this.timeCountdown();
  },
  timeCountdown() {
    var that = this
    var timeStampCur = new Date().getTime();
    //30分钟前
    var timeStampBefore = timeStampCur - 30 * 60 * 1000;
    if (timeStampCur > timeStampBefore) {
      var timeStampInterval = timeStampCur - timeStampBefore
      var hours = parseInt((timeStampInterval % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000));
      var minutes = parseInt((timeStampInterval % (60 * 60 * 1000)) / (60 * 1000));
      var seconds = parseInt((timeStampInterval % (60 * 1000)) / 1000);
      var timeNum = setInterval(function () {
        timeStampInterval = timeStampInterval - 1000
        hours = parseInt((timeStampInterval % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000));
        minutes = parseInt((timeStampInterval % (60 * 60 * 1000)) / (60 * 1000));
        seconds = parseInt((timeStampInterval % (60 * 1000)) / 1000);
        if (timeStampInterval < 1) {
          that.setData({
            timeSecond: '00:00:00'
          })
          clearInterval(timeNum)
          return false
        }
        hours = hours > 9 ? hours : '0' + hours
        minutes = minutes > 9 ? minutes : '0' + minutes
        seconds = seconds > 9 ? seconds : '0' + seconds
        that.setData({
          timeSecond: hours + ':' + minutes + ':' + seconds
        })
      }, 1000)
    } else {
      that.setData({
        timeSecond: '00:00:00'
      })
    }
  },
})
相关推荐
程序鉴定师15 小时前
如何选择合适的深圳小程序开发公司?
大数据·小程序
阿豪啊16 小时前
微信小程序订阅消息实战:从模板配置到发送全流程
微信小程序
云起SAAS18 小时前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
代码不加糖20 小时前
从零手写简易 Taro:20 行 JSX 如何变成小程序?(硬核实战)
小程序·taro
云云只是个程序马喽1 天前
AI漫剧创作系统开发定制指南
人工智能·小程序·php
斯班奇的好朋友阿法法2 天前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
cosinmz3 天前
图片太多太乱怎么整理?分享一个我最近常用的图片转 PDF方法
经验分享·小程序·pdf
科技互联.3 天前
2026年小程序定制市场:个性化需求激增,技术深度成竞争关键
人工智能·小程序
小羊Yveesss3 天前
2026年小程序商城的现状和发展趋势
小程序
Greg_Zhong3 天前
微信小程序如何关闭:当前渲染模式为webview?
微信小程序·微信小程序渲染引擎·渲染引擎需搭配更高基础库