この問題があります。AJAX 呼び出しで .NET サービスから日付を取得します。取得した日付のフォーマットはこんな感じです(イタリアにいます)
Mon Dec 31 2012 08:25:21 GMT+0100 (ora solare Europa occidentale)
この日付を dd/MM/yyyy の形式でフォーマットするにはどうすればよいですか? .NET サービス側では作業できませんが、JS 側からのみ作業できます。前もって感謝します。
この問題があります。AJAX 呼び出しで .NET サービスから日付を取得します。取得した日付のフォーマットはこんな感じです(イタリアにいます)
Mon Dec 31 2012 08:25:21 GMT+0100 (ora solare Europa occidentale)
この日付を dd/MM/yyyy の形式でフォーマットするにはどうすればよいですか? .NET サービス側では作業できませんが、JS 側からのみ作業できます。前もって感謝します。
入力形式が変わらないと仮定します。
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
正規表現を使用して日付を解析し、ビットを必要な形式に再結合できます。
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/
ビットをかなり簡単に解析して日付オブジェクトを取得し、任意の形式で書式設定された文字列を作成できます。以下は、クライアントとは異なる可能性があるタイムゾーンを考慮しています。
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());