0

この問題があります。AJAX 呼び出しで .NET サービスから日付を取得します。取得した日付のフォーマットはこんな感じです(イタリアにいます)

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

この日付を dd/MM/yyyy の形式でフォーマットするにはどうすればよいですか? .NET サービス側では作業できませんが、JS 側からのみ作業できます。前もって感謝します。

4

3 に答える 3

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
于 2013-03-13T08:36:23.973 に答える
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/

于 2013-03-13T08:36:54.827 に答える
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()); 
于 2013-03-13T08:57:26.633 に答える