小程序自定义组件里面:
this .triggerEvent( 'onselectdate' , { date: dateStr }); |
formatTime是自己写的时间格式化
这里两个log打印出来的都是合法日期字符串,
--> 2017-11-16
--> 2017-12-12
诡异的事情来了,triggerEvent,在模拟器上,无论使用dateStr,还是dateStr1作为事件参数,在引用组件的页面上,e.detail都是正常的:
{ date: '2017-11-16' } 或者 { date: '2017-12-12' }
但是在真机上,
使用dateStr1,正常,e.detail是 { date: '2017-12-12' },
使用dateStr有问题,e.detail是 { date: 'NaN-aN-aN' },
什么情况????
我自己试了下并没啥问题。再检查下你的代码?
P.S. 本问题与自定义组件无关。
你好,请检查你的formatTime实现。如果是用Date对象提供的方法,各个平台js引擎的实现会不一样。
问题查出来了,记录一下。
不知道是各平台js引擎的问题还是小程序问题
对于
const a = new Date('2017-12-12 12:12:12')
在android上是正常的,在ios上a肯定是null
换成
const a = new Date('2017/12/12 12:12:12')
就ok了
好吧,formtime应该是没问题
仔细调试后发现
出在这几行上,感觉仍然是真机和模拟器的问题啊:
console.log(selected.join(
'-'
) +
' '
+
this
.data.time);
const date = selected.join(
'-'
) +
' '
+
this
.data.time;
console.log(date,
new
Date(date))
注意,第一个log在真机和模拟器删个一样:
>> 2017-11-16 17:52
第二个log就出问题了
真机上:
>> null null
模拟器上:
2017-11-16 17:17 Thu Nov 16 2017 17:17:00 GMT+0800 (中国标准时间)
无论如何 date 不该是null吧。。。。