需求是:将一个字符串比如str = ‘2018-12-17 12:00:00’转换为时间戳
错误的代码:
var str = ‘2018-12-17 12:00:00’;
var dateTime = new Date(str);
原因:以上代码只能在安卓手机上运行,ios是不兼容的(结果为NaN)。
然后在google的时候才知道是这么个问题,ios系统不支持 2018-03-29 这样格式的时间导致出现的这个问题,IOS只识别 2018/03/09 这样的格式。那么这样也好办,正则匹配替换一下试试。

简单解决方式

  1. var data = '2018-03-09 12:00:00'
  2. var format = data.replace(/-/g, '/')
  3. var countDown = Date.parse(new Date(format))

封装一个函数,字符串转时间戳

  1. function str2Stamp(time){
  2. var date = time.substr(0, 10)
  3. var hour = time.substr(11, 2) == '00' ? 0 : time.substr(11, 2).replace(/\b(0+)/gi, "");
  4. var minute = time.substr(14, 2) == '00' ? 0 : time.substr(14, 2).replace(/\b(0+)/gi, "");
  5. var second = time.substr(17, 2) == '00' ? 0 : time.substr(17, 2).replace(/\b(0+)/gi, "");
  6. var timestamp = parseInt(new Date(date).getTime() / 1000) + parseInt(hour) * 3600 + parseInt(minute) * 60 + parseInt(second) - 28800
  7. return new Date(timestamp*1000);
  8. }

WXS中字符串转时间戳

普通的JS 是怎么使用,这里,利用 JS 的 RegExp 对象,将 g 参数单拿了出来。

  1. string.replace(new RegExp(pattern,'g'),"b");

在看看 wxs,生成 regexp 对象需要使用 getRegExp函数。getRegExp(pattern[, flags])

  1. string.replace(getRegExp(pattern,'g'),"b");

实例中我们就可以这样用了

  1. <view>{{util.isStart(2020-08-05 00:00:00)}}</view>
  2. <wxs module="util">
  3. var isStart = function (startTime) {
  4. startTime = startTime.replace(getRegExp('-','g'),"/");
  5. var curTime = getDate().getTime()
  6. startTime = getDate(startTime).getTime()
  7. return startTime > curTime ? true : false
  8. }
  9. module.exports = {
  10. isStart: isStart,
  11. }
  12. </wxs>

参考地址:https://www.jianshu.com/p/cfbd97d31c39
参考地址:https://blog.csdn.net/sheng_xinjun/article/details/85048809
参考地址:https://blog.csdn.net/weixin_42514606/article/details/102262018