Както мне надоело представление даты создания записи в Sails (атрибут createdAt) который выглядит так
2014-05-17T07:26:45.453Z
соответственно я захотел вырезать кусочек (T07:26:45.453Z) для чего было составлено такое корявое - но рабочее регулярное выражение (смотреть regexp) которое выделяет ту часть строки которую я хочу вырезать. соответственно далее я по старинке - дедовским методом хочу все выреать с помощью replace вот так
afterCreate: function (values, next) {
var stringReplace = /.\d{2}:\d{2}:\d{2}[.]\d{3}[Z]/;
var created = values.createdAt;
values.datetime = created.replace(stringReplace, ' ');
next();
}
Но мне воводят следующий error log: (если подчистить от лишнего)
TypeError: Object Sat May 17 2014 12:36:37 GMT+0400 (MSK) has no method 'replace'
Как я понял из этого лога то он обрабатывает не то, что уже в самом json выдается - а сам объект с вагоном подробностей, поэтому его нельзя replace-нуть (т.к не строка)
подскажите что можно сделать с пациентом? Как мне все-же сделать нормальную дату? Или все-же лучше распарсить значение на нормальное на стороне клиента?
Раньше в указанной переменной лежала дата в ISO формате. Теперь же, судя по всему, она сразу парсится в нативный js объект (что выглядит логичнее).
Если желание пользоваться регуляркой сильнее жизни, то к объекту достаточно применить .toISOString() и на выходе будет та же самая строка.
Либо можно сделать форматированный вывод даты для этого объекта. Но в большинстве случаев для получения красивого и нужного результата приходится применять дополнительные библиотеки, такие как moment.js или date.js