在图卷商店购买,有几率在周日刷新,S级的需要100S残卷,SS级的需要100SS残卷,刷新日期可以在微信小程序忍者营地查看。
做过web开发的小伙伴们多少会遇到时间转换问题在Chrome浏览器和Safari浏览器的不同,报错或者时间格式等等,这里我就分享一下我在开发过程中遇到的一些问题
关于时间问题,做过日历的都知道,全球化时区处理,或者时间格式,或者时间戳转化,这里我就这几种情况一一讨论
由于微信小程序的部分业务需要预定,所以会出现国外预定到国内时间会有偏差的问题,根本原因还是在于new Date(),它会获取当前系统时间,大部分手机是设置的是自动时间,所以会出现时区的偏差问题。
思考 :如果产品是某地的,那么预定时间应该为对应地的时区计算。所以需要维护定位与时区之间的关系
关于时区计算,因为我这边只用到了北京时间的情况,举个例子:
Safari浏览器中,进行 new Date("yyyy-MM-dd hh:mm:ss") 的时候,会出现报错Invalid Date,或者转换出问题的情况,原因是Safari并不支持此格式,所以需要调整格式化的方式。
ECMA-262 标准中( Date Time String Format )将日期格式规定为 YYYY-MM-DDTHH:mm:ss.sssZ ,其中, T 标识时间开始, Z 为相对于UTC(协调世界时 - International Atomic Time)的时间偏移量,可为 Z , +HH:mm 或 -HH:mm 。
思考 :要么正则替换为标准的 / 分割,要么在中间空白处加上 T ,看自己喜好
看文档是支持直接毫秒数时间戳转Date对象的,正常 *** 作也是如此。
PS :但是在微信小程序的iOS端转过来的实际时间是UTC的时间,所以需要同步为当前时区时间,为了不影响Android的时间结果,所以通过转换2次的方式解决时间计算问题。
ECMA-262 标准来源参考: https://www.jianshu.com/p/a11196377048
小程序的wxs功能可以让wsmxl可以调用和编写js,基本上wxs和JS无关系,只是语法形式很相似。
如下写了两个关于时间的函数,并将它们导出,
<wxs module="m1">
var getMax = function(flightDate) {
var now = getDate().getDate()
var flDate = getDate(flightDate).getDate()
if( now <flDate ){
return '+1'
}else{
return ''
}
}
var formartTime = function(flightDate,format){
if(flightDate){
var realDate = getDate(flightDate)
function timeFormat(num) {
return num <10 ? '0' + num : num
}
var date = {
"Y": timeFormat(realDate.getFullYear()),
"M": timeFormat(realDate.getMonth() + 1),
"d": timeFormat(realDate.getDate()),
"h": timeFormat(realDate.getHours()),
"m": timeFormat(realDate.getMinutes()),
"s": timeFormat(realDate.getSeconds()),
"q": Math.floor((realDate.getMonth() + 3) / 3),
"S": realDate.getMilliseconds(),
}
if (!format) {
format = "yyyy-MM-dd hh:mm:ss"
}
if( format == 'hh:mm' ){
return date.h+':'+date.m
}else{
return date.h+':'+date.m
}
}else{
return false
}
}
module.exports.getMax = getMax
module.exports.formartTime = formartTime
</wxs>
可在页面添加如下使用:
m1.formartTime() m1.getMax()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)