2015-06-03 2 views
-1

Я использую Date.js разобрать строку даты и времениDate.parse показывает ошибку

var start_time='10-Jun-15 12:00 am'; 
var end_time='10-Jun-15 12:00 pm'; 

когда оповещения

alert(Date.parse(start_time)); 
alert(Date.parse(end_time)); 

первый показывает

Wed Jun 10 2015 12:00:00 GMT+0530 (India Standard Time) 

и тому второй показывает

null 
?

, как решить эту .thanks заранее

+2

Прекрасно работает для меня, вы уверены, что это то, что вы пробовали? – Arvind

+0

вместо Date.parse, почему вы не пытаетесь использовать 'new Date (start_time)' –

+1

Вы не должны использовать кавычки? – Incognito

ответ

0

Отредактировано:

Я проверил свой формат даты как в хроме и FF. Firefox не понимает этот формат, но в Chrome он отлично работает.

Я использовал формат '10 Jun 2015 12:00 pm ', и он работал нормально в обоих браузерах.

Таким образом, вам, вероятно, следует попытаться удалить тире и использовать полный год или использовать любой другой формат даты.

Дата должна быть в формате RFC2822 or ISO 8601.

+0

Поскольку ОП обновил свой вопрос, ваш ответ становится недействительным. – Zee

0

Дефект, который вы описываете, встречается для меня тоже в Safari, Firefox и Chrome. Вместо того, чтобы исправить библиотеку, вот простая функция для анализа формата даты. Двухзначные годы - это не очень хорошая идея, функция рассматривает их как +2000. Третий и четырехзначный годы рассматриваются как есть.

// Parse date format dd-mmm-yy hh:mm ap 
// Two digit years are treated as 2000 
// Years of three digits or more are treated as is 
function parseDmY(s) { 
    var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5, 
       jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}; 
    var b = s.split(/[- :]/); 
    var h = (b[3]%12) + (/pm/i.test(b[5])? 12 : 0); 
    var y = +b[2] + (b[2] < 100? 2000 : 0) 
    return new Date(y, months[b[1].toLowerCase()], b[0], h, b[4]); 
} 

console.log(parseDmY('10-Jun-2015 12:00 pm')); 

Двухзначные годы также могут обрабатываться путем кадрирования в диапазоне от -70 до +30 текущего года.

0

Если ваша строка даты всегда указана в этом формате, использование Date.parseExact решит проблему ... и это будет более эффективно, чем использование Date.parse.

Пример

var start_time='10-Jun-15 12:00 am'; 
var end_time='10-Jun-15 12:00 pm'; 

alert(Date.parseExact(start_time, 'dd-MMM-yy hh:mm tt')); 
alert(Date.parseExact(end_time, 'dd-MMM-yy hh:mm tt')); 

Надеется, что это помогает.