Комментарии 19
А чем не понравилась Moment.js?
На ноде, вроде, прекрасно работает.
> for parsing, manipulating, and formatting
Хорошая библиотека, но мне не надо парсить и валидировать. Это достаточно редкие задачи. Я хотел только форматирование.
Хорошая библиотека, но мне не надо парсить и валидировать. Это достаточно редкие задачи. Я хотел только форматирование.
Парсинг — обратная задача по отношению к форматированию, иногда, когда код бекенда недоступен нужно парсить даты. Валидация — для ввода.
А вообще, я про форматирование писал. Там огромное количество возможностей, включая поддержку языков. Хотя, следует заметить, уникальные черты у datef есть.
А вообще, я про форматирование писал. Там огромное количество возможностей, включая поддержку языков. Хотя, следует заметить, уникальные черты у datef есть.
Один я не понимаю, зачем это нужно?
Функция date() из phpjs, также не имеет зависимостей, но выглядит более вкусной за счёт известного шаблона форматов и практически гарантированой безглючности. (размеры при этом примерно одинаковые).
Но задача актуальная, так что при наличии интереса конечно продолжайте. Особо интересными для ленивых могут оказаться хелперы для js-шаблонизаторов с реализацией данного функционала.
Но задача актуальная, так что при наличии интереса конечно продолжайте. Особо интересными для ленивых могут оказаться хелперы для js-шаблонизаторов с реализацией данного функционала.
А откуда гарантия безглючности?
От аудитории — phpjs популярная библиотека, все баги которые можно было выловить в таких примитивных функциях уже выловлены.
Своих можно добавить только при создании обёртки под RequireJS, но это постараться надо.
Если ваша библиотека обретёт популярность, то через какой-то период времени, можно будет говорить о подобных гарантиях и у неё.
Своих можно добавить только при создании обёртки под RequireJS, но это постараться надо.
Если ваша библиотека обретёт популярность, то через какой-то период времени, можно будет говорить о подобных гарантиях и у неё.
Функция leadingZeroes везде добавляет только 2 нуля слева. Можно сократить до
function leadingZeroes(value) {
return ('00' + value).slice(-2);
}
Не совсем везде 2. Есть, например +0000 год:)
Кстати, тут у меня баг — хорошо, что вы подняли этот вопрос.
Кстати, тут у меня баг — хорошо, что вы подняли этот вопрос.
Или вот так универсально:
function leadingZeroes( len, value ) { // length - total count of chars
return Array( len + 1 - value.toString().length ).join('0') + value;
}
Остроумно. Сделаете pull-request?
Не умею git, но хочу научиться на днях ="(.
Если код будет использоваться часто, то такой подход будет не оправданным. Писал в своё время форматтер, он сначала парсил нужный формат и выплёвывал функцию, в которой не было ничего лишнего, а потом через эту функцию гнались все значения. Обычно в проекте надо всего 3-4 формата даты.
Если код будет использоваться часто, то такой подход будет не оправданным. Писал в своё время форматтер, он сначала парсил нужный формат и выплёвывал функцию, в которой не было ничего лишнего, а потом через эту функцию гнались все значения. Обычно в проекте надо всего 3-4 формата даты.
надо делать проверку, что длина строки value.length не превышает len, иначе получится ошибка
RangeError: Array length must be a finite positive integer
RangeError: Array length must be a finite positive integer
Использую что то подобное
/*******************************************************************************
* @Name : "date_format($dt,$ds)" // Имя
* #Guid : {59BA575F-E2FD-40B3-B6D3-CDDED99E635C} // GUID
* @Create : 25.12.2006/12:26:11 // Дата создания
* @Exampl : "alert(date_format(new Date(),'yyMMdd_HHmmss_FFF'));" // Пример использования
* @Params : $dt - Объект Date // Параметры запуска
* $ds - Форматная строка(шаблон возвращаемого значения)
* 'yyyy'- // Год,[0000-9999]
* 'yy'- // Год,[00-99]
* 'MM'- // Месяц,[01-12]
* 'M'- // Месяц,[1-12]
* 'dd'- // День месяца,[01-31]
* 'd'- // День месяца,[1-31]
* 'HH'- // Час в 24-часо.,[00-23]
* 'H'- // Час в 24-часо.,[0-23]
* 'mm'- // Минуты,[00-59]
* 'm'- // Минуты,[0-59]
* 'ss'- // Секунды,[00-59]
* 's'- // Секунды,[0-59]
* 'FFF'- // Тысячные доли секунды,
* 'FF'- // Сотые доли секунды.
* 'F'- // Десятые доли секунды.
* 'ZZZ'- // Смещение времени в минутах
* 'ZZ'- // Смещение времени в часах
*
* @Descrp : Функция преобразования даты и времени в строку по требуемому формату // Описание
* @Return : Строку даты и времени в требуемом формате// Возвращаемое значение
* @Depend : _pad(a, b, d, e) для добавления нулей // Использует (Зависимости)
* GPL applies. No warranties XGuest[25.12.2006/12:26:11] [ver.1.0.0.0]
*******************************************************************************/
function date_format(a, b) {
var c = new function(a) {
var b = Date.prototype, c = require('String')._pad;
this.yyyy = b.getFullYear.call(a);
this.yy = ("" + this.yyyy).substr(2, 2);
this.M = b.getMonth.call(a) + 1;
this.MM = c(this.M, 2);
this.dd = b.getDate.call(a);
this.d = c(this.dd, 2);
this.H = b.getHours.call(a);
this.HH = c(this.H, 2);
this.m = b.getMinutes.call(a);
this.mm = c(this.m, 2);
this.s = b.getSeconds.call(a);
this.ss = c(this.s, 2);
this.FFF = c(b.getMilliseconds.call(a), 3, 1);
this.FF = this.FFF.substr(0, 2);
this.F = this.FFF.substr(0, 1);
this.ZZZ = c(b.getTimezoneOffset.call(a), 4);
this.ZZ = c(b.getTimezoneOffset.call(a)/60, 3);
}(a);
return b.replace(/(yyyy|yy|MM|M|dd|d|HH|H|mm|m|ss|s|FFF|FF|F|ZZZ|ZZ)/g, function(a) {return c[a];});
}
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Библиотечка datef — форматирование дат