Дата и время без метки времени в Javascript

В Javascript мне нужно работать с понятиями даты, времени и «даты и времени», не обращаясь к конкретному моменту времени. Это точно такая же семантика, которую LocalDate и LocalTime в joda time предоставляют в Java. Я кратко рассмотрел Date.js и moment.js, но обе библиотеки, кажется, основаны на объекте Date, который представляет момент времени. Есть ли какая-нибудь библиотека javascript, которая предоставляет то, что мне нужно?

Случай использования:

Существует объект модели - купон, у которого есть дата истечения срока действия (LocalDate времени joda). Я хочу сравнить эту дату с сегодняшней датой, поэтому мне нужно представление сегодняшней даты (на самом деле подойдет строка в формате гггг-мм-дд). Я знаю, что сегодняшняя дата, а следовательно, и результат сравнения, будут зависеть от настроек часового пояса браузера, но это не проблема.


person abl    schedule 11.06.2015    source источник
comment
Как правило, все такие библиотеки используют «время эпохи» в качестве эталона! Можете ли вы описать вариант использования?   -  person nalinc    schedule 11.06.2015
comment
@NLN Есть так много вариантов использования. Например, даты рождения. Но также страховым компаниям или банкам срочно нужен такой тип, как обычная календарная дата (например, расчет процентов, которые привязаны к дням, а не к эпохе).   -  person Meno Hochschild    schedule 11.06.2015


Ответы (1)


Я несколько раз начинал с библиотеки JavaScript с API, похожим на Noda Time / Joda Time / Java 8. Я определенно вижу в этом ценность. Но там пока ничего нет, насколько я знаю. Существуют другие причины, по которым Date объект не идеален. Я постараюсь не забыть обновить этот пост, когда/если я когда-нибудь получу новую библиотеку или узнаю о ней, созданной кем-то другим.

А пока проще всего использовать moment.js:

var expDateString = "2015-06-30";
var exp = moment(expDateString, "YYYY-MM-DD");
var now = moment();
if (exp.isAfter(now))
   // expired
else
   // valid

Вы также можете сделать это с помощью простого JavaScript, но есть некоторые проблемы с поведением синтаксического анализа. Момент проще.

person Matt Johnson-Pint    schedule 12.06.2015