做过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
注意:传入的dateTimeStamp时间戳以秒计时。如你想传以毫秒计时的值时先除1000getDateDiff:function (dateTimeStamp) {
var minute = 60
var hour = minute * 60
var day = hour * 24
var halfamonth = day * 15
var month = day * 30
var now = Date.parse(new Date())/1000 //有些特殊 不能使用 new Date()
var diffValue = now - dateTimeStamp
if(diffValue <0){return}
var monthC =diffValue/month
var weekC =diffValue/(7*day)
var dayC =diffValue/day
var hourC =diffValue/hour
var minC =diffValue/minute
var result = ''
if(monthC >= 1){
result="" + parseInt(monthC) + "月前"
}
else if(weekC>=1){
result="" + parseInt(weekC) + "周前"
}
else if(dayC>=1){
result=""+ parseInt(dayC) +"天前"
}
else if(hourC>=1){
result=""+ parseInt(hourC) +"小时前"
}
else if(minC>=1){
result=""+ parseInt(minC) +"分钟前"
}else{
result="刚刚"
}
return result
}//时间戳转化为几天前,几小时前,几分钟前
获取当前时间首先,在要获取时间的.js文件中加载util.js文件
然后在onload方法中,调用util.js中的formatTime方法获取当前时间
//获取当前时间
//
调用函数时,传入new
Date()参数,返回值是日期和时间
var
TIME
=
util.formatTime(new
Date())
this.setData({
time:
TIME,
})
这样就获取到了当前时间,但是我们发现在util.js中并没有获取当前日期的方法。
没事,别慌!
这个时候我们去看下util.js中获取当前时间的方法formatTime(),里面的方法写的特别容易理解,我们可以模仿这个方法写一个formatDate()方法。
看到那个小箭头了吗,你可以随便设置,我这样子设置后就是
2018-7-16
这样的效果。
到了这里,还差最后一步,如图
在module.exports中一定要加上你写的方法,否则程序会报错说找不定formatDate这个方法。
加好了之后,就能成功在onload中调用这个方法获取日期了。
//获取当前日期
var
DATE
=
util.formatDate(new
Date())
this.setData({
date:
DATE,
})
以上所述是小编给大家介绍的微信小程序获取当前时间及日期的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:微信小程序中时间戳和日期的相互转换问题微信小程序日期时间选择器使用方法微信小程序使用picker实现时间和日期选择框功能【附源码下载】微信小程序
滚动选择器(时间日期)详解及实例代码微信小程序之picker日期和时间选择器微信小程序
选择器(时间,日期,地区)实例详解
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)