2013-04-11 22 views
0

У меня есть переменная, содержащая данные JSON с тысячами строк. Некоторые из переменных - это даты в следующем формате: Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time). Мне нужно преобразовать все эти переменные в более удобный формат даты, например `mm/dd/yyyy '.Преобразование формата даты в переменную JSON

Любые предложения о том, как это сделать?

{ 
"request": [ 
{ "startdate":"Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)" , 
    "status":"in progress" }, ... 
]} 

Заранее благодарен!

+3

Так вы пытались сделать это сами еще? Если да, то что вы пробовали и что конкретно не работает для вас? –

ответ

3

Вы можете передать строку даты в качестве аргумента при создании экземпляра класса Date. Javascript не имеет хорошего форматирования даты, но вы можете легко свернуть свой собственный. Например:

function parseDate(date) { 
    var d = new Date(date); 
    var month = d.getMonth() + 1; 
    var day = d.getDate(); 
    var year = d.getFullYear(); 
    if(month < 10) month = '0' + month; 
    if(day < 10) day = '0' + day; 
    return month + '/' + day + '/' + year; 
} 
parseDate('Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)'); 
// returns "06/27/2008" 
+0

Ах, отлично! Спасибо! :) –

2

Попробуйте следующее:

var json = { 
    "request": [ 
     { "startdate":"Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)" , 
     "status":"in progress" } 
]}; 
var date = new Date(json.request[0].startdate); 
var formatDate = function(date) { 
    var mm = date.getMonth()+1; 
     mm = mm > 10 ? mm : "0"+mm; 
    var dd = date.getDate(); 
     dd = dd > 10 ? dd : "0"+dd; 
    var yy = date.getFullYear(); 
    return mm+"/"+dd+"/"+yy; 
} 
var formattedDate = formatDate(date); 
1

Всегда лучше всего преобразовать строку в объект даты, чтобы вручную разобрать ее, если у вас нет очень контролируемой среды. Далее следует сделать работу:

// Use date string to create a UTC time to pass to Date constructor 
// Expected format is day mon year hh:mm:ss GMToffset (timezone name) 
// e.g. Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time) 
function parseDate(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 s = s.split(/[ :]/g); 
    var offset = s[7]; 

    // Deal with offset 
    var sign = offset.indexOf('-') >= 0? -1 : 1; 
    var len = offset.length; 
    var offMins = sign * offset.substring(len-4, len-2) * 60 + sign * offset.substring(len-2, len); 
    var mins = s[4] - offMins; 

    return new Date(Date.UTC(s[3], months[s[1].toLowerCase()], s[2], s[4], mins, s[6])); 
} 

var s = 'Fri Jun 27 2008 00:00:00 GMT-0700 (US Mountain Standard Time)'; 

alert(parseDate(s)); //Fri 27 Jun 2008 17:00:00 GMT+1000 

Вы можете форматировать дату, однако вы хотите:

function formatDateUS(d) { 
    function z(n){return (n<10? '0':'') + n} 
    return z(d.getMonth()+1) + '/' + z(d.getDate()) + '/' + d.getFullYear(); 
} 

formatDateUS(parseDate(s)); // 06/27/2008 
Смежные вопросы