微信小程序時(shí)間戳與日期格式的轉(zhuǎn)換方法
1. 微信小程序 時(shí)間戳與日期格式的轉(zhuǎn)換
微信小程序中的時(shí)間戳是指格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù)。例如現(xiàn)在北京時(shí)間2015-12-31 17:00:00的時(shí)間戳是1451552400,就是指從北京時(shí)間1970-01-01 08:00:00到2015-12-31 17:00:00已經(jīng)過去了1451552400秒。
在編程語(yǔ)言中使用時(shí)間戳的好處:
(1)時(shí)間戳沒有時(shí)區(qū)概念,比如如果用’2015-12-31 17:00:00’這么一個(gè)字符串表示時(shí)間的話,北京時(shí)間和美國(guó)時(shí)間是不一樣的,但是用時(shí)間戳1451552400來(lái)表示的話,那就是一定是唯一的時(shí)間,不會(huì)有歧義;
(2)時(shí)間戳在編程語(yǔ)言中一般是長(zhǎng)整形數(shù)據(jù)類型,無(wú)論何種編程語(yǔ)言都能認(rèn)識(shí)時(shí)間戳,如果用字符串表示時(shí)間,還需要轉(zhuǎn)換。
1.1. 獲取昨天,今天,明天的xx-xx-xx格式的日期
微信小程序picker 日期選擇中經(jīng)常要用到 年-月-日 格式的時(shí)間,寫下來(lái)方便以后使用。
//時(shí)間的格式為 xxxx-xx-xx 即 年-月-日, 小程序picker中經(jīng)??梢杂玫? //昨天的時(shí)間 var day1 = new Date(); day1.setTime(day1.getTime()-24*60*60*1000); var s1 = day1.getFullYear()+"-" + (day1.getMonth()+1) + "-" + day1.getDate(); //今天的時(shí)間 var day2 = new Date(); day2.setTime(day2.getTime()); var s2 = day2.getFullYear()+"-" + (day2.getMonth()+1) + "-" + day2.getDate(); //明天的時(shí)間 var day3 = new Date(); day3.setTime(day3.getTime()+24*60*60*1000); var s3 = day3.getFullYear()+"-" + (day3.getMonth()+1) + "-" + day3.getDate();
1.2. 獲取前一天時(shí)間
微信小程序獲取前一天時(shí)間。

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. 時(shí)間轉(zhuǎn)換為時(shí)間戳
(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); //1670145353555
console.log(time2); //1670145353555
console.log(time3); //1670145353000(2)方法二
var time = '2020-04-01 00:00:00';
var repTime = time.replace(/-/g, '/');//用正則主要是把“2020-04-01 00:00:00'”轉(zhuǎn)換成“2020/04/01 00:00:00'”兼容ios
console.log("返回時(shí)間:" + repTime);
var timeTamp = Date.parse(repTime);
console.log("返回時(shí)間戳:" + timeTamp)1.4. 訂單倒計(jì)時(shí)實(shí)現(xiàn)
1.4.1. 實(shí)現(xiàn)思路:
求出發(fā)起拼團(tuán)時(shí)間與拼團(tuán)結(jié)束時(shí)間的時(shí)間差
再將時(shí)間差格式化得到我們想要的格式如:
時(shí)間每秒遞減使用了 setTimeout(this.setTimeCount,1000);這個(gè)函數(shù),讓這個(gè)函數(shù)每隔一秒執(zhí)行一次。
1.4.2. 實(shí)現(xiàn)中的難點(diǎn)
若是要實(shí)現(xiàn)單個(gè)倒計(jì)時(shí)如60s發(fā)送驗(yàn)證碼倒不是很難,難的是多條倒計(jì)時(shí)。
不同的訂單下單時(shí)間是不一樣的時(shí)間差time也就不一樣,所以當(dāng)初在這卡了很久,后來(lái)想通一切才覺得原來(lái)如此。
1.4.3. 實(shí)現(xiàn)方法
后臺(tái)計(jì)算出時(shí)間前端直接獲取時(shí)間差,當(dāng)時(shí)為了不影響項(xiàng)目進(jìn)度我們用的就是這個(gè)方法,真是苦了那個(gè)些后臺(tái)的兄弟還得遷就我這個(gè)菜鳥。
獲取這個(gè)時(shí)間差time后我們就可以將它處理后放入數(shù)組循環(huán)。這樣做的好處是前端不用將time作為一個(gè)屬性添加到原數(shù)組中。
1.4.4. 示例代碼
(1)timeCount.wxml
<view class="TimeSeond">{{timeSecond}}</view>(2)timeCount.js
Page({
data: {
timeSecond: '', //倒計(jì)時(shí)
},
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'
})
}
},
})
到此這篇關(guān)于微信小程序時(shí)間戳與日期格式的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)小程序時(shí)間戳與日期格式轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你javascript如何獲取對(duì)象的key和value
獲取對(duì)象所有key的方法,需要使用?Object.keys(obj)?方法,Object.keys(obj)方返回一個(gè)數(shù)組,這個(gè)數(shù)組包含obj對(duì)象中的所有key,這篇文章主要介紹了javascript如何獲取對(duì)象的key和value,需要的朋友可以參考下2022-12-12
使用js實(shí)現(xiàn)一個(gè)簡(jiǎn)單的滾動(dòng)條過程解析
這篇文章主要介紹了使用js實(shí)現(xiàn)一個(gè)簡(jiǎn)單的滾動(dòng)條過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
完美解決手機(jī)網(wǎng)頁(yè)中輸入框被輸入法遮擋的問題
下面小編就為大家分享一篇完美解決手機(jī)網(wǎng)頁(yè)中輸入框被輸入法遮擋的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2017-12-12
JavaScript forEach的幾種用法小結(jié)
forEach()是JavaScript中一個(gè)常用的方法,用于遍歷數(shù)組或類數(shù)組對(duì)象中的每個(gè)元素,本文就來(lái)介紹一下JavaScript forEach的幾種用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
JavaScript中Cookie的使用之如何設(shè)置失效時(shí)間
這篇文章主要介紹了JavaScript中Cookie的使用之如何設(shè)置失效時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-12-12

