Разделить строку, чтобы получить часы

#javascript

#javascript

Вопрос:

 var date = '28/05/2011 12:05';
var elem = date.split('');
hours = elem[0];
  

У меня есть приведенный выше формат даты, пожалуйста, скажите мне, как разделить это, чтобы я мог получить 12 (часы) из этой строки?

Комментарии:

1. '' был ли единственный разделитель, который вы пробовали?

Ответ №1:

 var date = '28/05/2011 12:05';
var hrs = date.split(' ')[1].split(':')[0];
  

Ответ №2:

Вы можете использовать один вызов для разделения каждого компонента с помощью регулярного выражения:

 var date = '28/05/2011 12:05';
var elem = date.split(/[/ :]/);
alert(elem[3]); //-> 12
  

Рабочий пример:http://jsfiddle.net/gZ9c7

Комментарии:

1. @Marcel: он по-прежнему использует split, который может принимать регулярное выражение в качестве входных данных. Я серьезно сомневаюсь, что скорость будет проблемой для такой маленькой строки, и я не думаю, что разделение, доступ к индексу массива, расщепление, доступ к индексу массива также является очень читаемым или эффективным решением.

2. Вы абсолютно правы, особенно в отношении удобочитаемости кода.

3. 1, потому что это единственный ответ, который фактически делает доступными все части даты и времени. (Другие ответы используют split(), но отбрасывают все остальные части, поэтому для тех, кто, если мы собираемся продолжить и принять согласованный формат, почему бы просто не использовать substring() вместо split ()?)

Ответ №3:

Решение для регулярных выражений:

 var myRe = /([0-9] ):[0-9] $/i;
var myArray = myRe.exec("28/05/2011 12:05");

alert(myArray[1]); // 12
  

Некоторая дополнительная информация:

Ответ №4:

При условии, что это согласованный формат:

 var hours = date.split(' ')[1].split(':')[0]
  

это довольно просто.

Ответ №5:

при работе с датами лучше использовать специальные функции даты / времени:

 var date = '28/05/2011 12:05';
var ms = Date.parse(date)
alert(new Date(ms).getHours())
  

Комментарии:

1. Internet Explorer не будет анализировать эту дату.

2. После тестирования webkit также не будет.

3. Не используйте Date.parse для разбора произвольных строк даты; вам следует только ввести в нее (и в Date конструктор) строки, отформатированные в соответствии с RFC 1123 или (только в более новых версиях движков JavaScript) подмножество ISO 8601 . Все остальное не указано и, следовательно, полностью зависит от реализации, что приводит к неожиданному поведению в разных браузерах.

4. Я не думаю, что есть что-то особенно неправильное в извлечении части строки даты / времени вместо того, чтобы пытаться проанализировать дату, а затем получить ту часть, которая вам нужна. Помимо преобразования часовых поясов и проверки даты, это не обязательно дает какие-либо преимущества. В этом случае определенно нет преимущества.