2013-03-13 1 views
0

이 문제가 있습니다. AJAX 호출로 .NET 서비스에서 날짜를 받았습니다. 받은 날짜의 형식이 같다 (I 이탈리아에서 오전).NET 서비스 AJAX에서 JS 형식 날짜

Mon Dec 31 2012 08:25:21 GMT+0100 (ora solare Europa occidentale) 

어떻게 형식 DD/MM은/년에이 날짜를 포맷 할 수 있습니다? .NET 서비스 측에서 작업 할 수는 없지만 JS 측에서만 작업 할 수 있습니다. 미리 감사드립니다.

답변

0

당신은 날짜 개체를 가져 비교적 쉽게 비트를 구문 분석 할 수 있습니다, 당신이 원하는 형식으로 포맷 된 문자열을 만들 수 있습니다. 다음은 클라이언트와 다를 수있는 시간대를 고려한 것입니다.

var s = 'Mon Dec 31 2012 08:25:21 GMT+0100'; 

function getDate(s) { 

    // Split the string into bits 
    var s = s.split(/[ :]/); 

    // Conversion for month to month number (zero indexed) 
    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}; 

    // Calculate the offset in minutes 
    var offsetMins = s[7].substring(4,6) * 60; 
    offsetMins += s[7].substring(6,8) * 1; 
    offsetMins *= s[7].substring(3,4) == '+'? 1 : -1; 

    // Build a UTC date value, allowing for the offset in minutes, 
    // and pass to the Date constructor 
    var date = new Date(Date.UTC(s[3], months[s[1].toLowerCase()], 
       s[2], s[4], (s[5] - offsetMins), s[6])); 

    // return the date object 
    return date; 
} 

function padN(n) { 
    return (n<10? '0' : '') + n; 
} 

var d = getDate(s); 

alert(padN(d.getDate()) + '/' + padN(d.getMonth() + 1) + '/' + d.getFullYear()); 
+0

이것이 시간대를 유지하는 가장 완벽한 대답이라고 생각합니다. 고맙습니다. – cyberfido

0

사용자의 입력 형식이 변경되지 않습니다 가정 :

var date = "Mon Dec 31 2012 08:25:21 GMT+0100 (ora solare Europa occidentale)" 
var parts = date.split(' '); 
var monthMap = {"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04", "May": "05", "Jun": "06", "Jul": "07", "Aug": "08", "Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12"} 
var formatted = parts[2]+"/"+monthMap[parts[1]]+"/"+parts[3] 

// -> 31/12/2012 
0

당신은 다음 필요한 형식으로 비트를 재결합, 날짜를 구문 분석하는 정규 표현식을 사용할 수 있습니다. 여기

function pad(n) { 
    return (n < 10) ? ("0" + n) : n; 
} 


var dateString = "Mon Dec 31 2012 08:25:21 GMT+0100 (ora solare Europa occidentale)"; 

// I'm not sure what the Italian three letter month abbreviations are, so I've used English 
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 

var m = dateString.match(/^\S{3} (\S{3}) (\d{1,2}) (\d{4})/); 

var formattedDate = pad(m[2]) + "/" + pad(months.indexOf(m[1])+1) + "/" + m[3]; 

JSFiddle는 : http://jsfiddle.net/Mhuxk/

+0

이 답변은 내가 어떻게 작동 하는지를 이해하는데 많은 도움이되었습니다. 고맙습니다. – cyberfido