В текущем сценарии можно с уверенностью предположить, что все сравниваемые даты относятся к одному дню, поэтому сохраняется только время.Безопасное сравнение времени в Moment.js
Однако очевидно, что существует ненулевая вероятность проблемы типа Y2K.
Этот фрагмент кода может произойти сбой при выполняется в 00:00 (примерно), если momentTimeA
линии оценивается в 23: 59: 59,999 одного дня и momentTimeB
линии оценивается в 00: 00: 00.000 другой день:
// timeA is '06:00:00', momentTimeA is '2016-11-11T06:00:00.000';
const momentTimeA = moment(timeA, 'H:mm:ss');
// ...
// timeB is '03:00:00', momentTimeB is '2016-11-12T03:00:00.000';
const momentTimeB = moment(timeB, 'H:mm:ss');
// should be positive
momentTimeA.diff(momentTimeB);
В настоящее время этот код, который выполняет сравнения времени, работает синхронно, но может стать асинхронным позже, это значительно увеличит риск.
Как решить эту проблему?
Когда вы получите время 0:00:00, попробуйте изменить его на 0:00:01 (или что-то не сломает его, что действительно близко к 0:00:00, например, 12:59:59), если время EXACT не является действительно необходимым. – Feathercrown
@Feathercrown Я бы предпочел избежать этого, если это возможно, потому что время должно быть квантовано иногда, а некоторые из сравнений выполняются с жестко закодированными «00: 00» и «24: 00», это усложнит логику. – estus
Ну, хм ... Я думаю, вы могли бы проверить, равен ли он нулю и просто взять значение другого как разницу. – Feathercrown