#javascript #parsing #datetime #momentjs
#javascript #синтаксический анализ #дата и время #momentjs
Вопрос:
В настоящее время я анализирую JSON, который возвращает такую строку для time «201610161000»(2016-10-16 10:00). Я использовал Momentjs для ее разбора следующим образом: «moment(«201610161000″, ‘ГГГГМДДХХММ’)» Проблема в том, что это занимает слишком много времени, когда я анализирую его с большими данными. Если я удалю его, то это займет всего 10 мс. В противном случае для Momentjs требуется 1000 мс. Есть ли способ преобразовать приведенную выше строку во время без использования Moment? (Я не могу изменить формат времени в JSON)
var inner = _.map(num.series, function(n, k) {
return {
x: moment(n.bucket, 'YYYYMMDDHHmm'),
y: n,
};
});
Ответ №1:
Это можно сделать с помощью методов конкатенации и разделения в java-script. Попробуйте следующий подход
var jsonTime = "201610161000".split("");
var parsedDate = jsonTime.slice(0, 4).join("") "-" jsonTime.slice(4, 6).join("") "-" jsonTime.slice(6, 8).join("") "-" jsonTime.slice(8, 10).join("") ":" jsonTime.slice(10, 12).join("");
//output : 2016-10-16-10:00
Комментарии:
1. Спасибо, я решил вместо этого использовать substring, что сокращает время синтаксического анализа до 100-160 мс. Интересно, есть ли еще лучший подход?
2. да, это тоже хороший вариант, чем момент. зачем загружать дополнительную библиотеку, когда это можно сделать с помощью встроенных методов. 🙂