最近在开发一个大用户量的小程序,由于某个环节校验需要将日期进行格式存储,但由于苹果手机和安卓手机返回的日期不同导致格式存在一些小问题,本来以为写个函数搞掂;但发现不同的苹果品牌IOS返回的日期格式;在调试器里测试可以,但真机就老出问题,网上看了一下资料很多人也遇到但都没有确信可以解决的方案,于是自己写了一个云函数进行日期的获取,但又引出一个新的问题就是云函数的时区问题,当然这个已经有解决方法,这里就不再讨论。。
好吧,我们还是直接上代码:
代码语言:javascript复制// 云函数入口文件
//const cloud = require('wx-server-sdk')
//cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
//const wxContext = cloud.getWXContext()
switch (event.action) {
case 'now_date': {
return "" YDate(new Date());
};
case 'now_time': {
return "" YTime(new Date());
};
case 'get_date': {
var addday=event.addDay;
console.log("|===>" addday);
if(!addday){
addday=0;
}
console.log(addday);
return "" getDateStr(new Date(),addday);
};
case 'Ytimestamp':{
return Math.floor(Date.now() / 1000);
};
default: {
return YDate(new Date()) ' ' YTime(new Date());
}
}
}
//获取月份
function YDate(date) {
date = date.toLocaleString("zh-cn", { timeZone: "Asia/Shanghai" });
date = new Date(date);
var y = date.getFullYear();
var m = date.getMonth() 1;
m = m < 10 ? ('0' m) : m;
var d = date.getDate();
d = d < 10 ? ('0' d) : d;
return y '-' m '-' d;
};
//获取时间
function YTime(date) {
date = date.toLocaleString("zh-cn", { timeZone: "Asia/Shanghai" });
date = new Date(date);
var h = date.getHours();
h = h < 10 ? ('0' h) : h;
var minute = date.getMinutes();
minute = minute < 10 ? ('0' minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' second) : second;
return h ':' minute ':' second;
};
//次日日期 that.getDateStr(null,1)
function getDateStr(date,addDayCount) {
console.log("date==>" date "|addDayCount==>" addDayCount);
date.setDate(date.getDate() addDayCount);//获取AddDayCount天后的日期
var y = date.getFullYear();
var m = date.getMonth() 1;//获取当前月份的日期
var d = date.getDate();
if (m < 10) {
m = '0' m;
};
if (d < 10) {
d = '0' d;
};
return y "-" m "-" d;
}
最后再说一个秘笈,就是时间段的判断,可以通过当前的时间跟限制时间进行相减,判断得出的值差
代码语言:javascript复制 if ((new Date().getHours()-books.replace(':00', '').replace('0', ''))<=0||(new Date().getHours()-booke.replace(':00', '').replace('0', ''))>=0) {}
哈哈暂时这样吧~