Biorąc pod uwagę moje dane:

2011-12-31 01:00:00

Jaki prosty i szybki skrypt mogę używać do wyodrębniania po prostu: "grudnia 31"?

2
Francesco 10 grudzień 2011, 03:53

4 odpowiedzi

Najlepsza odpowiedź

http://www.datejs.com/ jest ładny dla tego

Używanie go kod byłby jak (testowany i roboty)

Date.parse('2011-12-31 01:00:00').toString("MMM d"); // "Dec 31"

To rozwiązanie jest wspaniałe, ponieważ DatayS to bardzo elastyczna biblioteka.

4
Gourneau 10 grudzień 2011, 05:18

To może to zrobić. Wystarczy przejść ciąg jako parametr do obiektu daty i podzielić datestring. Concatenate i skończysz :)

var n = new Date("2011-12-31 01:00:00");
var d = n.toDateString().split(" ");
var formattedDate = d[1].toUpperCase() + " " + d[2];

Lub opcjonalnie jako funkcja

function getFormattedDate(dateString) {
    var n = new Date(dateString);
    var d = n.toDateString().split(" ");
    return d[1].toUpperCase() + " " + d[2];
}

var formattedDate = getFormattedDate("2011-12-31 01:00:00"); // returns "DEC 31"
3
Joseph Marikle 10 grudzień 2011, 00:01

Funkcja, która zrobiłaby dokładnie, o co prosiłeś (i nic więcej):

function toMonthAndDay(dateString) {
    var months = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];
    var dateParts = dateString.split(/[- ]/);
    return months[+dateParts[1]] + " " + dateParts[2];
}

Ale w dowolnym dniu i wyjściu go w dowolnym formacie niestandardowym, napisałem funkcję luźno opartą na

Date.prototype.format = function (format)
{
    var MMMM = ["\u0000", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    var MMM = ["\u0001", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var dddd = ["\u0002", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var ddd = ["\u0003", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
    function ii(i, len) { var s = i + ""; len = len || 2; while (s.length < len) s = "0" + s; return s; }

    var y = this.getFullYear();
    format = format.replace(/yyyy+/g, y);
    format = format.replace(/yy/g, y.toString().substr(2, 2));
    format = format.replace(/y/g, y);

    var M = this.getMonth() + 1;
    format = format.replace(/MMMM+/g, MMMM[0]);
    format = format.replace(/MMM/g, MMM[0]);
    format = format.replace(/MM/g, ii(M));
    format = format.replace(/M/g, M);

    var d = this.getDate();
    format = format.replace(/dddd+/g, dddd[0]);
    format = format.replace(/ddd/g, ddd[0]);
    format = format.replace(/dd/g, ii(d));
    format = format.replace(/d/g, d);

    var H = this.getHours();
    format = format.replace(/HH+/g, ii(H));
    format = format.replace(/H/g, H);

    var h = H > 12 ? H - 12 : H == 0 ? 12 : H;
    format = format.replace(/hh+/g, ii(h));
    format = format.replace(/h/g, h);

    var m = this.getMinutes();
    format = format.replace(/mm+/g, ii(m));
    format = format.replace(/m/g, m);

    var s = this.getSeconds();
    format = format.replace(/ss+/g, ii(s));
    format = format.replace(/s/g, s);

    var f = this.getMilliseconds();
    format = format.replace(/fff+/g, ii(f, 3));
    f = Math.round(f / 10);
    format = format.replace(/ff/g, ii(f));
    f = Math.round(f / 10);
    format = format.replace(/f/g, f);

    var T = H < 12 ? "AM" : "PM";
    format = format.replace(/TT+/g, T);
    format = format.replace(/T/g, T.charAt(0));

    var t = T.toLowerCase();
    format = format.replace(/tt+/g, t);
    format = format.replace(/t/g, t.charAt(0));

    var day = this.getDay() + 1;
    format = format.replace(new RegExp(dddd[0], "g"), dddd[day]);
    format = format.replace(new RegExp(ddd[0], "g"), ddd[day]);

    format = format.replace(new RegExp(MMMM[0], "g"), MMMM[M]);
    format = format.replace(new RegExp(MMM[0], "g"), MMM[M]);

    return format;
};

Stosowanie:

new Date("2011-12-31 01:00:00".replace(/-/g, "/")).format("MMM d"); // returns Dec 31

Zauważ, że tzn. Nie rozpoznaje "2011-12-31 01:00:00" jako prawidłowy ciąg daty. Musisz wymienić kreski z cięciami. Aby uzyskać DEC zamiast Dec, musisz zadzwonić .toUpperCase().

Różnice z ciąży formatu Data Custom Date są:

  • Możesz wykonać wielkie litery AM / PM lub małe litery, stosując odpowiednio TT lub tt
  • Za pomocą \ jako znak ucieczki nie jest (jeszcze) wdrożony.
0
gilly3 1 marzec 2012, 17:34

To powinno działać:

var date = "2011-12-31 01:00:00";

var day = date.substring(8, 10);

var month = parseInt(date.substring(5, 7));
switch(month) {
    case 1:     month="JAN";break;
    case 2:     month="FEB";break;
    case 3:     month="MAR";break;
    case 4:     month="APR";break;
    case 5:     month="MAY";break;
    case 6:     month="JUN";break;
    case 7:     month="JUL";break;
    case 8:     month="AUG";break;
    case 9:     month="SEP";break;
    case 10:    month="OCT";break;
    case 11:    month="NOV";break;
    case 12:    month="DEC";break;
}


alert(month + " " + day);
-1
Jeffrey Sweeney 9 grudzień 2011, 23:58