小程序使用了一个picker组件,自定义时间点选择,前端需要把时间点转换成时间戳,上线之后,有部分外国留学生用户反映时间选择无效,原本以为微信小程序的bug,后来有感觉是手机机型的问题,绞尽脑汁不知所谓,后来在两位韩国小姐姐的帮助下经过多方测试,发现是手机和微信系统语言的问题.
当设置成中文语言时候,toLocaleString()方法返回的时间格式是这样的2018/12/4,当设置成韩语是时候返回的格式是这样的 Tue Dec 04 2018.因此,当拼接上时间点转换成时间戳的时候就出现了问题.查了文档才发现:
toLocaleString()方法返回该日期对象的字符串,该字符串格式因不同语言而不同.新增的参数 locales和options使程序能够指定使用哪种语言格式化规则,允许定制该方法的表现(behavior).在旧版本浏览器中, locales和options参数被忽略,使用的语言环境和返回的字符串格式是各自独立实现的.
下例展示了本地化日期格式的一些变化,为了在应用的用户界面得到某种语言的日期和时间格式,必须确保使用locales参数指定了该语言(可能还需要设置某些回退语言)
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
console.log(date.toLocaleString('en-US'));
// → "12/19/2012, 7:00:00 PM"
console.log(date.toLocaleString('en-GB'));
// → "20/12/2012 03:00:00"
console.log(date.toLocaleString('ko-KR'));
// → "2012. 12. 20. 오후 12:00:00"
console.log(date.toLocaleString('ar-EG'));
// → "٢٠/١٢/٢٠١٢ ٥:٠٠:٠٠ ص"
console.log(date.toLocaleString('ja-JP-u-ca-japanese'));
// → "24/12/20 12:00:00"
console.log(date.toLocaleString(['ban', 'id']));
// → "20/12/2012 11.00.00"
除了设置返回的时间格式,还可以通过参数设置编号系统,日历方式,24小时制或者12小时制等等.
有兴趣的可以研究一下.
总结知识查漏补缺,如有错误或者不足欢迎大神指正补充,多谢.