2013-07-06 2 views
1

У меня есть дата в следующем формате:Синтаксическая дату и время с отформатированной датой

Wed Jul 17 2013 13:00:00 GMT-0700 (PDT) 

Может кто-нибудь сказать мне, как разобрать дату истечения

Wed Jul 17 2013 

и во время из-за этого, не используя строку функции

1:00pm 
+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse смотрите эту ссылку надеюсь, что это полезно для вас –

+0

Похож на вывод toString объекта даты. Можете ли вы получить доступ к самому объекту? Откуда вы получаете этот вход? что ты уже испробовал? – user1555863

+1

_ "без использования строковых функций" _ - Почему? Разве это не совсем то, что такое «синтаксический анализ»? Особенно, когда дата уже находится в том формате, в котором вы нуждаетесь, и время просто нуждается в незначительной настройке, чтобы переключиться на формат am/pm. (Чтобы сделать это _without_ строковые функции, вам придется преобразовать его в 'Date', а затем вытащить отдельные части и собрать их обратно в желаемый формат ...) – nnnnnn

ответ

1

Одним из простейших способов является обеспечение правильной установки ваших локалей, что позволяет чтобы сделать что-то вроде этого:

var myStrDate = 'Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)'; 
var myDate = Date.parse(myStrDate); 
var myDateOnly = myDate.toLocaleDateString(); 
var myTimeOnly = myDate.toLocaleTimeString(); 

Вот прекрасное место для начала: http://www.w3schools.com/jsref/jsref_obj_date.asp

+0

Строки не имеют .parse () 'method ... – nnnnnn

+0

Вы правы - я исправил эту строку в коде. – DevlshOne

1

Вы можете построить Date объект со строкой даты, в сочетании с дополнительными функциями, чтобы получить требуемую мощность. dayname() возвращает имя дня, monthname() возвращает трехбуквенное название месяца.

Я использовал console.info() для вывода результатов - alert() можно использовать в качестве альтернативы, если это необходимо.

function dayname(d) 
{ 
    var names = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri","Sat" ]; 
    return names[d.getDay()]; 
} 
function monthname(d) 
{ 
    var names = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 
    return names[d.getMonth()]; 
} 

// construct new date object passing date string as parameter 
var d = new Date("Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)"); 
console.info(dayname(d) + ' ' + monthname(d) + ' ' + d.getDate() + ' ' + d.getFullYear()); 

За время, это gettime() функция проверяет час до выхода утра или вечера правильно, и для правильного formatting-:

function gettime(d) 
{ 
    var ampm = "am"; 
    var hour = d.getHours(); 
    var mins = d.getMinutes(); 
    if (hour >= 12) 
    { 
     hour = hour - 12; 
     ampm = "pm"; 
    } 
    if (hours < 10) 
     hours = "0" + hours; 
    if (mins < 10) 
     mins = "0" + mins; 
    return hour + ":" + mins + ampm; 
} 
console.info(gettime(d)); 
+0

Но это форматирует текущую дату. OP заявили, что у них уже есть конкретная дата в определенном формате ... – nnnnnn

+0

обновлен. Объект date теперь создается с использованием строки даты. – suspectus

1
var ms = Date.parse(new Date("Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)")); 
var curr_date = ms.getDate(); 
var curr_month = ms.getMonth() + 1; //Months are zero based 
var curr_year = ms.getFullYear(); 
var hours = ms.getHours(); 
var mins = ms.getMinutes(); 
suf = (hours >= 12)? 'pm' : 'am'; 
hours = hours % 12; 
document.write(curr_date + "-" + curr_month + "-" + curr_year + " " + hours + ":" + min + " " + suffix); 

Также попробуйте использовать moment.js, вы можете форматировать dateTime, как вы пожелаете.

Смежные вопросы