【问题标题】:Getting "INVALID DATE" if device or emulator not in "debug remotely" mode如果设备或仿真器未处于“远程调试”模式,则获取“无效日期”
【发布时间】:2019-09-10 14:16:14
【问题描述】:

我正在应用程序中构建聊天功能,并且正在使用 FaridSafi/react-native-gifted-chat。当我在 chrome 上调试时,消息日期很好。 如果我不远程调试所有消息日期变为“无效日期”。 我在真实设备和模拟器上的结果相同

我使用此函数将我从 API 获得的日期格式化为库所采用的格式:

formatOneMessage(message) {
  const receiver = this.props.navigation.getParam("receiver");
  const receiverName = receiver.Name;
  const receiverLastName = receiver.lastName;
  const formatedDate = Util.formatDate(message.creation_date)
  const FormatedMessage = {
    _id: message.id,
    text: message.content,
    createdAt: new Date(formatedDate),
    user: {
      _id: message.sender_id,
      name: receiverName + " " + receiverLastName,
      avatar: "https://placeimg.com/140/140/any"
    }
  };
  return FormatedMessage;
}
formatDate(date){
  let dateAndTimeArray = date.split(" ");
  let dateArray = dateAndTimeArray[0].split("-");
  let newDate = dateArray[1] + "-" + dateArray[0] + "-" + dateArray[2];
  let newDateAndTime = newDate + " " + dateAndTimeArray[1]
  return newDateAndTime;
}

谢谢!

【问题讨论】:

    标签: react-native react-native-gifted-chat


    【解决方案1】:

    我使用 Moment.JS 自己解决了这个问题,使用

    moment().format()
    

    【讨论】:

      【解决方案2】:

      请注意,您的“new Date()”参数具有 ISO_8601 格式。 有关此的更多信息,请参见此处:https://stackoverflow.com/a/58353084/1256697

      【讨论】:

        【解决方案3】:

        这是我使用 moment.js 解决此问题的方法:

         formatOneMessage(message) {
            const receiverName = this.props.navigation.getParam("receiverName");
            const modifiedDate = Util.formatDate(message.creation_date);
            const formatedDate = moment(modifiedDate, "MM-DD-YYYY HH:mm:ss");
        
            const FormatedMessage = {
              _id: message.id,
              text: message.content,
              createdAt: formatedDate,
              user: {
                _id: message.sender_id,
                name: receiverName,
                avatar: "https://placeimg.com/140/140/any"
              }
            };
        
            return FormatedMessage;
          }
        

        如果你好奇 Util.formatDate 在做什么:

        formatDate(date) {
            let dateAndTimeArray = date.split(" ");
            let dateArray = dateAndTimeArray[0].split("-");
            let newDate = dateArray[1] + "-" + dateArray[0] + "-" + dateArray[2];
            let newDateAndTime = newDate + " " + dateAndTimeArray[1];
        
            return newDateAndTime;
          },
        

        【讨论】:

          猜你喜欢
          • 2017-04-22
          • 2019-11-14
          • 2019-12-29
          • 1970-01-01
          • 2018-05-21
          • 1970-01-01
          • 1970-01-01
          • 2020-04-08
          • 2013-04-10
          相关资源
          最近更新 更多