#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
Некоторая дополнительная информация:
- Здесь пример рабочего кода.
- О регулярном выражении в JS.
Ответ №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. Я не думаю, что есть что-то особенно неправильное в извлечении части строки даты / времени вместо того, чтобы пытаться проанализировать дату, а затем получить ту часть, которая вам нужна. Помимо преобразования часовых поясов и проверки даты, это не обязательно дает какие-либо преимущества. В этом случае определенно нет преимущества.