Разобрать строку «Дата и время» в Javascript, которая имеет пользовательский формат

Мне нужно проанализировать строку даты и времени в формате «2015-01-16 22:15:00». Я хочу разобрать это в объект даты JavaScript. Любая помощь в этом?

Я пробовал некоторые плагины jquery, moment.js, date.js, xdate.js. Все равно не повезло.


person yuva    schedule 17.01.2015    source источник
comment
Пожалуйста, опубликуйте свои попытки. Иначе сложно помочь.   -  person nha    schedule 17.01.2015
comment
возможный дубликат Где я могу найти документацию по форматированию дата в JavaScript   -  person Félix Adriyel Gagnon-Grenier    schedule 17.01.2015


Ответы (5)


С помощью moment.js вы можете создать объект момента, используя конструктор String+Format:

var momentDate = moment('2015-01-16 22:15:00', 'YYYY-MM-DD HH:mm:ss');

Затем вы можете преобразовать его в объект даты JavaScript, используя метод toDate():

var jsDate = momentDate.toDate();
person moises.vilar    schedule 17.01.2015
comment
Я пытался использовать moment.js, но возникла ошибка ReferenceError: момент не определен. Я также установил путь js в своем html. - person yuva; 17.01.2015
comment
Как сказал Мэтт Джонсон, вы должны следовать инструкциям по использованию moment. js в вашем браузерном приложении. - person moises.vilar; 18.01.2015

Лучшее решение, теперь я использую date.js - https://code.google.com/p/datejs/

Я включил скрипт на свою html-страницу следующим образом:

<script type="text/javascript" src="path/to/date.js"></script>

Затем я просто проанализировал строку даты «2015-01-16 22:15:00», указав формат как

var dateString = "2015-01-16 22:15:00";
var date = Date.parse(dateString, "yyyy-MM-dd HH:mm:ss");
person yuva    schedule 18.01.2015
comment
Это терпит неудачу для меня. Кажется, что эта функция разбора date.js работает только в одном формате. Второй аргумент полностью игнорируется. - person Marc; 08.09.2016

new Date("2015-01-16T22:15:00")

См. Date.parse().

Строка должна быть в формате ISO-8601. Если вы хотите анализировать другие форматы, используйте moment.js.

moment("2015-01-16 22:15:00").toDate();
person dusky    schedule 17.01.2015
comment
Это сработало для меня. То, что я сделал, было небольшим улучшением вашего предложения, я разместил это решение в комментарии. Спасибо :) - person yuva; 17.01.2015

Я пытался использовать ребята из moment.js. Но поскольку у меня была эта ошибка «ReferenceError: момент не определен», мне пришлось пока ее пропустить. Я пока использую временный обходной путь.

function parseDate(dateString) {
    var dateTime = dateString.split(" ");
    var dateOnly = dateTime[0];
    var timeOnly = dateTime[1];

    var temp = dateOnly + "T" + timeOnly;
    return new Date(temp);
}
person yuva    schedule 17.01.2015

Если вы уверены, что он в нужном формате и не нуждается в проверке на наличие ошибок, вы можете проанализировать его вручную с помощью разделения (и, при необходимости, замены). Мне нужно было сделать что-то подобное в моем проекте (MM/DD/YYYY HH:mm:ss:sss), и я изменил свое решение, чтобы оно соответствовало вашему формату. Обратите внимание на вычитание 1 в месяце.

var str = "2015-01-16 22:15:00"; 
//Replace dashes and spaces with : and then split on :
var strDate = str.replace(/-/g,":").replace(/ /g,":").split(":");
var aDate = new Date(strDate[0], strDate[1]-1, strDate[2], strDate[3], strDate[4], strDate[5]) ; 
person JSub    schedule 19.07.2017