繁体   English   中英

在 React Native 上没有调试模式的时刻格式时间将成为无效日期

[英]Moment format the time will become invalid date without debug mode on React Native

时刻版本是 2.24.0

我的日期值为2019-04-23 03:16:00 +0000 UTC

我用 moment 让它变成亚洲时间,就像:

const moment = require('moment');

const localTime = moment(date).format('YYYY/MM/DD HH:mm');

<Text>{localTime}</Text>

localTime 将显示2019/04/23 11:16

当我在调试模式下测试它时它起作用了。

但是当我关闭调试模式时, localTime将是

invalid date

Android和IOS都会出现这个问题。

有任何想法吗?

对于在 Android 上遇到 Moment 日期/时间问题的任何其他人,特别是如果您从 React Native 0.59(或更早版本)迁移到 0.60+,Hermes 似乎改变了 Android 使用 Moment/日期的方式。 但是,它会在启用调试器时起作用。 事实证明,当您运行调试器时,它会从 Hermes 切换回 Chromium 引擎(或 V8?)。 导致我们不得不使用控制台日志来追踪 Moment 解析问题。 奇怪的是,在 Safari 中尝试相同的操作时也会出现问题。

如果您正在解析通过日、月、年的不同变量传入的日期,并且日或月没有前面的零(例如:01 vs 1),那么我建议这样做: const momentFormat = { y: birthYear, m: birthMonth, d: birthDay }; return Moment(momentFormat).format('MMMM Do, YYYY'); const momentFormat = { y: birthYear, m: birthMonth, d: birthDay }; return Moment(momentFormat).format('MMMM Do, YYYY'); 这手动设置值,而不是依赖于正确格式化的每个值或必须编写自定义代码以确保日/月值在需要时具有 0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM