You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

1.6 KiB

为什么传递时间信息时候推荐使用时间戳

前后端传递时间信息的时候,推荐使用标准时间戳,即自1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数。为什么?

错误写法

    //  前端向后端传递时间
    const time = "2022-04-19 10:56:05"
    //  前端获取到后端传递的时间信息进行解析
    const timeStr = "2022-04-19 10:56:05"
    const time = BI.getDate(timeStr).getTime()  //  期望输出:1650336965000
    console.log(`距离现在经过了${(BI.getTime() - time) / 1000}秒`)

正确写法

    //  前端向后端传递时间
    const time = BI.getTime()
    //  前端获取到后端传递的时间信息进行解析
    const time = 1650336965000  //  直接接收时间戳
    console.log(`距离现在经过了${(BI.getTime() - time) / 1000}秒`)

答案解析

MDN中关于Date对象的构造函数描述中,特别强调了由于浏览器之间的差异与不一致性,强烈不推荐使用Date构造函数来解析日期字符串,这是为什么呢,如果把上面的错误示例放到IE浏览器中执行

    const timeStr = "2022-04-19 10:56:05"
    const time = BI.getDate(timeStr).getTime()  //  会收到报错:Invalid DateDate

如果一定要解析时间字符串,FineUI中提供了BI.parseDateTime方法,仅适用于处理一些用户手动输入的时间格式字符串场景

    const timeStr = "2022-04-19 10:56:05"
    const time = BI.getDate(BI.parseDateTime(timeStr,"%Y-%X-%d %H:%M:%S")).getTime()  //  期望输出:1650336965000