【问题标题】:Why is iPhone iOS showing invalid date for momentjs为什么 iPhone iOS 显示 momentjs 的无效日期
【发布时间】:2020-03-02 00:22:21
【问题描述】:

我有一个日期选择器,它返回一个始终处于 UTC 时区的时刻对象。我需要在这个日期做一些逻辑,但总是希望它在用户本地时区,所以我做了以下事情:

    //strip submission date of timezone offset
    let submission_date = moment(this.state.startDate).format('YYYY-MM-DD hh:mm:ss a');
    submission_date = moment(submission_date);
    let last_date = this.last_date.diff(submission_date, 'days');

但是,当我这样做时,我的 iPhone 抱怨 submission_date 不是有效日期。桌面很好,所以我猜这是一个野生动物园问题。当我检查this.state.startDate 之前,它是像2018-11-01T17:52:44-00:00 这样的字符串

难道不应该立即接受它作为有效日期吗?

【问题讨论】:

    标签: javascript ios time safari momentjs


    【解决方案1】:

    我发现它是格式字符串中的a 标志。我将其更改为YYYY-MM-DDTHH:mm:ss,它运行良好。 Safari 一定不能喜欢am/pm 数据。

    【讨论】:

    • 我正在使用 YYYY-MM-DD,但日期仍然无效。
    【解决方案2】:

    尝试用字符串函数结束

    //strip submission date of timezone offset
    let submission_date = moment(String(this.state.startDate),'YYYY-MM-DD hh:mm:ss a');
    let last_date = moment(String(this.last_date),'YYYY-MM-DD hh:mm:ss a').diff(submission_date, 'days');
    

    Safari 引擎有一些独特的方式来处理/解析日期对象

    【讨论】:

      【解决方案3】:

      遵循这种格式。年应该在开始。必须使用“/”而不是“-”。 月份不能使用“MMM”

      YYYY/MM/DD hh:mm A
      

      【讨论】:

        猜你喜欢
        • 2020-01-18
        • 1970-01-01
        • 2019-04-29
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多