У меня есть значение, которое может быть строковой датой или числом. Я хотел бы обрабатывать каждый случай по-разному.
Значения даты могут быть любой допустимой строкой даты, которая может быть проанализирована библиотекой дат, например dayjs. Например: "10/10/2020"
, "10-20-2020"
...
Числовые значения могут быть фактическими числами или числами в виде строки, поэтому такие значения, как 5
, "5.3"
, "10"
...
Например ->
const number = parseFloat(value);
if (!isNaN(number)) {
return NumberValueConverter.prototype.toView(number);
}
const date = dayjs(value);
if (date.isValid()) {
return DateValueConverter.prototype.toView(value);
}
Однако этот код не работает - поскольку строки даты, такие как 10-10-2020, 10-10-2020, в конечном итоге анализируются до 10
Если я сделаю это в обратном порядке, dayjs преобразует числа, такие как 10, в действительную дату.
parseFloat
вообще, толькоisNaN(value)
. Он вернет независимо от того, дает ли преобразование действительное число или нет.isNaN("10-10-2020")
этоtrue
- person VLAZ   schedule 18.03.202120210318
является допустимым представлением даты в базовом формате ISO 8601. Это также действующий номер. (2021-03-18
— это расширенный формат даты ISO 8601.) - person Matt Johnson-Pint   schedule 18.03.2021