Как преобразовать строку во время?

#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. да, это тоже хороший вариант, чем момент. зачем загружать дополнительную библиотеку, когда это можно сделать с помощью встроенных методов. 🙂