Cum de a crea un obiect date din șir în javascript

Având acest șir 30/11/2011. Vreau să-l convertească la data de obiect.

Am nevoie pentru a utiliza :

Date d = new Date(2011,11,30);   /* months 1..12? */

sau

Date d = new Date(2011,10,30);   /* months 0..11? */

?

Comentarii la întrebare (2)
Soluția
var d = new Date(2011,10,30);

ca luni sunt indexate de la 0 la js.

Comentarii (4)

Cu siguranta ai doriți să utilizați cea de-a doua expresie de luni în JS sunt enumerate de la 0.

De asemenea, puteți utiliza Data.analiza metoda, dar se folosește formatul de dată:

var d = Date.parse("11/30/2011");
Comentarii (4)

Sintaxa este după cum urmează:

new Date(year, month [, day, hour, minute, second, millisecond ])

deci

Date d = new Date(2011,10,30);

este corect; zi, oră, minut, secundă, milisecundă sunt opționale.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

Comentarii (1)

Există mai multe metode de creare a data cum sa discutat mai sus. Eu nu va repeta aceleași lucruri. Aici este mic metodă de a converti Șirul de la Data în Java Script, dacă asta este ceea ce cauti,

function compareDate(str1){
// str1 format should be dd/mm/yyyy. Separator can be anything e.g. / or -. It wont effect
var dt1   = parseInt(str1.substring(0,2));
var mon1  = parseInt(str1.substring(3,5));
var yr1   = parseInt(str1.substring(6,10));
var date1 = new Date(yr1, mon1-1, dt1);
return date1;
}
Comentarii (5)

Foarte simplu:

var dt=new Date("2011/11/30");

Data trebuie să fie în format ISO yyyy/MM/dd.

Comentarii (1)

Primul extras șirul astfel de prognoze

var dateString = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);

Apoi,

var d = new Date( dateString[3], dateString[2]-1, dateString[1] );
Comentarii (1)

Întotdeauna, pentru orice problemă referitoare la JavaScript spec în practică, eu va recomand la Mozilla Developer Network, lor JavaScript referință.

După cum se afirmă în tema Data obiect despre argumentul varianta ai folosi:

new Date(year, month, day [, hour, minute, second, millisecond ])

Și despre luni parametru:

luni valoare Întreagă reprezentând lună, începând cu 0 pentru ianuarie-11 decembrie.

În mod clar, atunci, ar trebui să utilizați lună numărul 10 pentru luna noiembrie.

P. S.: motivul pentru Care am recomanda MDN este corectitudinea, explicație bună a lucrurilor, exemple, compatibilitate browser-ul grafic.

Comentarii (0)

Pot't cred că javascript nu este't mai mult în concordanță cu parsarea date. Și am auzit implicit atunci când nu există nici o zona de fus orar se va schimba de la UTC la nivel local-sper că web-ul este pregătit ;)

Prefer să Javascript face munca grea atunci când vine vorba de parsare date. Cu toate acestea, ar fi frumos să se ocupe de zona de fus orar local problema destul de transparent. Cu aceste lucruri în minte, aici este o funcție a face cu actualul status-quo-și atunci când Javascript schimbări acesta va funcționa în continuare, dar apoi pot fi eliminate (cu un pic de timp pentru oameni pentru a prinde cu browsere mai vechi/nodejs, desigur).

function strToDate(dateStr)
{
    var dateTry = new Date(dateStr);

    if (!dateTry.getTime())
    {
        throw new Exception("Bad Date! dateStr: " + dateStr);
    }

    var tz = dateStr.trim().match(/(Z)|([+-](\d{2})\:?(\d{2}))$/);

    if (!tz)
    {
        var newTzOffset = dateTry.getTimezoneOffset() / 60;
        var newSignStr = (newTzOffset >= 0) ? '-' : '+';
        var newTz = newSignStr + ('0' + Math.abs(newTzOffset)).slice(-2) + ':00';

        dateStr = dateStr.trim() + newTz;
        dateTry = new Date(dateStr);

        if (!dateTry.getTime())
        {
            throw new Exception("Bad Date! dateStr: " + dateStr);
        }
    }

    return dateTry;
}

Avem nevoie de un obiect date indiferent; deci createone. Dacă există un fus orar, am terminat. În caz contrar, de a crea o zona de fus orar local șir folosind +hh:mm format (mai acceptat decât +hhmm).

Comentarii (0)