【问题标题】:react native with moment.js用 moment.js 做出原生反应
【发布时间】:2018-06-04 12:03:55
【问题描述】:

我使用原生 react 来开发移动应用程序。 我检索了一个 API 的一些信息,我在该 API 上循环使用这种格式的日期:

 "2018-06-02T10: 00: 00 2018-06-02T11: 00: 00; 2018-06-03T10: 00: 00 2018-06-03T11: 00: 00"

我知道它是 ISO 8601 格式,我想让它看起来更好,所以我尝试使用 Moment.js 但我不能。

这是我的部分代码(当然我没有忘记导入 Moment.js):

这是我的代码(当然我没有忘记导入 Moment.js):

                    <View style={styles.contentItem}>
                  <Text style={styles.text}>{Moment(item.fields.timetable).format('YYYY-MM-DD HH:mm')}</Text>
                  <Foundation name="clock" style={styles.icons} />
                </View>

我发现自己遇到“无效日期”错误,我做错了吗?你能帮我或给我一些线索吗?

【问题讨论】:

  • 你能检查一下2018-06-02T10: 00: 00 2018-06-02T11: 00: 00这个是不是正确的?
  • 发送您从服务器获取的单个日期。
  • 请检查 api 检索时间格式?
  • 谢谢,我试了阿里sn提出的方案,成功了:D

标签: react-native momentjs


【解决方案1】:

您必须将单个日期传递给 moment 而不是日期数组。您可以像这样将输入日期格式传递给moment

let date = "2018-06-02T10: 00: 00"
let correctDate = moment(date, 'YYYY-MM-DDTHH: mm: ss').format('YYYY-MM-DD HH:mm'),

【讨论】:

    【解决方案2】:

    由于您的获取日期为String,因此您需要将其转换为Date,然后您可以根据需要更新格式。答案如下:

      const stillUtc = moment.utc(YOUR_DATE).toDate();
      const local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm');
    

    【讨论】:

      【解决方案3】:

      嗯,您的格式不完全是 ISO 8601。你有一些额外的空间。

      您能否将2018-06-02T10: 00: 00 替换为2018-06-02T10:00:00。 ? (如果日期带有时区,您可以在末尾添加Z 2018-06-02T10:00:00Z

      请务必将Date 仅提供给Moment,而不是array

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 1970-01-01
        相关资源
        最近更新 更多