如果年份大于4个字符且没有moment.js,则获取无效日期。js

时间:2019-05-10 16:52:11

标签: javascript reactjs react-bootstrap

我正在尝试将UTC时间转换为本地时间。只要年份为4个字符,该代码就可以正常工作;但是,如果更大,它会抛出:

RangeError:date.toISOString()处的无效时间值

我尝试了不同的方法,发现我的日期对象抛出此异常,因为当它尝试转换诸如“ 22222-01-23T12:30:26.000Z”之类的日期时,它包含“无效日期” 转换为ISOString。

<Form.Group as={Col}>
    <Form.Label>Future Date</Form.Label>
    <Form.Control id="futureDate" type="datetime-local" name="futureDate" placeholder="Future Date" value={UtcToDiffTime(futureDate) || ""} onChange={this.handleInputChange}/>
</Form.Group>
static UtcToDiffTime(utc){
        let date = new Date(utc);
        date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
        return date.toISOString().slice(0, date.toISOString().lastIndexOf(":")));
    } else {
        return null;
    }
}

有没有一种方法可以转换日期而不管年份字符或使日期包含有效的日期字符串?

我正在尝试将“ 22222-01-23T12:30:26.000Z” 截断为“ 22222-01-23T12:30” ,而无需使用moment.js。

1 个答案:

答案 0 :(得分:0)

我建议使用momentjs这样的格式。

此外,iso字符串格式mandates表示年份的4位数字。任何偏差都是“根据双方同意”,即:未标准化。