React Moment Js не возвращается json время в минутах - PullRequest
1 голос
/ 14 апреля 2020

У меня есть файл JSON с временем задержки в секундах, установленным в объекте, подобном этому:

 "delay": 420,

Когда я сопоставляю объект в React без мгновений, все 8 элементов в массиве json вернуть их время (ie 300, 420, 60 и т. д. c ...) для каждого объекта.

const DelayTailLbl = (props) => {
  const [delayTailData, setDelayTailData] = useState(props.data);

  return (
    <div>
      <div>
        <span>{delayTailData.delay}</span>
      </div>
    </div>
  );
};
export default DelayTailLbl;

Теперь я пытаюсь преобразовать секунды в минуты, используя заданные минуты от момента, как показано в Документы: https://momentjs.com/docs/# / get-set / minute /

import moment from 'moment'

const DelayTailLbl = (props) => {
  const [delayTailData, setDelayTailData] = useState(props.data);

  return (
    <div>
      <div>
        <span>{moment(delayTailData.delay).format("mm")}</span>
      </div>
    </div>
  );
};
export default DelayTailLbl;

, когда я добавляю момент, время для всех 8 объектов возвращается с 00 для минут. Если я изменю время на format("HH:mm:ss"), оно вернет 00: 00: 00.

Как правильно вернуть данные JSON в виде секунд, используя момент? Я не понимаю без этого, почему он возвращает правильные данные, но с ним он ничего не возвращает,

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

То, что вы делаете, - это создание объекта даты и времени с использованием delayTailData.delay

Что вы действительно хотите - это использовать Длительности Момента

Длительности Момента

Используя Длительность Момента, вы можете просто moment.duration(delayTailData.delay, 'seconds');, и если вы хотите отобразить это время в дружественном режиме, вы можете сделать moment.duration(delayTailData.delay, 'seconds').humanize();

1 голос
/ 14 апреля 2020

Вы можете сделать это следующим образом:

const secs = 420;
const mins = moment.utc(secs*1000).format('mm');
const hhmmss = moment.utc(secs*1000).format('HH:mm:ss');

console.log('mm:\t', mins);
console.log('hhmmss:\t', hhmmss);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...