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

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

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 日期选择中经常要用到 年-月-日 格式的时间,写下来方便以后使用。

//时间的格式为 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. 获取前一天时间

  微信小程序获取前一天时间。
在这里插入图片描述

 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() + 1if (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)方法一

   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); //1670145353555console.log(time2); //1670145353555console.log(time3); //1670145353000

  (2)方法二

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

<view class="TimeSeond">{{timeSecond}}</view>

  (2)timeCount.js

Page({data: {timeSecond: '', //倒计时},onLoad() {this.timeCountdown();},timeCountdown() {var that = thisvar timeStampCur = new Date().getTime();//30分钟前var timeStampBefore = timeStampCur - 30 * 60 * 1000;if (timeStampCur > timeStampBefore) {var timeStampInterval = timeStampCur - timeStampBeforevar 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 - 1000hours = 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' + hoursminutes = minutes > 9 ? minutes : '0' + minutesseconds = seconds > 9 ? seconds : '0' + secondsthat.setData({timeSecond: hours + ':' + minutes + ':' + seconds})}, 1000)} else {that.setData({timeSecond: '00:00:00'})}},
})

在这里插入图片描述

相关文章:

  • 今天分享一个网店客服回复数据集-用于网点客服AI助手自动回复智能体训练
  • 下采样(Downsampling)
  • python文件处理自用
  • 【PCIE配置空间】
  • 软件中的保护锁在工程项目中的应用
  • C算术运算符 printf输出格式 字符指针打印输出 使用scanf函数进行输入
  • MCGS昆仑通太屏笔记
  • 【mongodb】数据库操作
  • OSI七层网络模型详解
  • 【MySQL】MySQL建立索引不知道注意什么?
  • OpenStack Yoga版安装笔记(23)Swift安装
  • 六边形棋盘格(Hexagonal Grids)的坐标
  • OPC_KEPServerEX 6 安装与授权
  • 【KWDB 创作者计划】_上位机知识篇---Docker容器
  • 提升电脑性能!Windows超级管理器,免费使用,功能全面!
  • 故障诊断 | CNN-BiGRU-Attention故障诊断
  • 真实波幅策略思路
  • uniapp-x 二维码生成
  • 【愚公系列】《Python网络爬虫从入门到精通》054-Scrapy 文件下载
  • 多道程序和多任务操作系统区别
  • 普京宣布临时停火30小时
  • 科普|一名肿瘤医生眼中的肺癌诊疗变化:从谈癌色变到与癌共存
  • 河南社旗县委书记张荣印转任南阳市人大常委会农工委主任
  • 外交部:中国将深化同柬埔寨等周边国家友好合作,携手推进亚洲现代化进程
  • 江西南昌:千年银杏树倒伏,全力抢救进行时​
  • 商务部新闻发言人就美对华关税税率情况答记者问