LINUX.ORG.RU

Проблема с регулярным выражением

 ,


0

1

Както мне надоело представление даты создания записи в 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-нуть (т.к не строка) подскажите что можно сделать с пациентом? Как мне все-же сделать нормальную дату? Или все-же лучше распарсить значение на нормальное на стороне клиента?



Последнее исправление: cetjs2 (всего исправлений: 1)

Подтверждаю Vit-а.

Раньше в указанной переменной лежала дата в ISO формате. Теперь же, судя по всему, она сразу парсится в нативный js объект (что выглядит логичнее).

Если желание пользоваться регуляркой сильнее жизни, то к объекту достаточно применить .toISOString() и на выходе будет та же самая строка.

Либо можно сделать форматированный вывод даты для этого объекта. Но в большинстве случаев для получения красивого и нужного результата приходится применять дополнительные библиотеки, такие как moment.js или date.js

Od1n
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.