Ottieni una settimana dell'anno in JavaScript come in PHP


140

Come posso ottenere l'attuale numero di settimana dell'anno, come quello di PHP date('W')?

Dovrebbe essere il numero di settimana ISO-8601 dell'anno, settimane a partire da lunedì.


1
Guarda <a href=" javascript.about.com/library/blweekyear.htm "> <b> qui </b> </a>, che è stato il primo link fornito quando ho cercato su Google "settimana dell'anno javascript".
Pete Wilson,

+1 Lol! È lì che ho preso lo snippet da me stesso, ma non riuscivo a ricordare la fonte come l'ho trovata qualche tempo fa.
Tom Chantler,

@Pete: quel codice ottiene 22 come settimana corrente. Mentre dovrebbe essere il 21
PeeHaa,

@Pete: D No, un semplice -1 non farà il trucco: P Non otterrebbe il numero della settimana ISO-8601. Una settimana in ISO-8601 inizia il lunedì. La prima settimana è la settimana con il primo giovedì dell'anno. en.wikipedia.org/wiki/ISO-8601 . PS non sono stato io a declassarti.
PeeHaa,

Risposte:


277

Dovresti essere in grado di ottenere quello che vuoi qui: http://www.merlyn.demon.co.uk/js-date6.htm#YWD .

Un collegamento migliore sullo stesso sito è: lavorare con settimane .

modificare

Ecco un po 'di codice basato sui link forniti e su quello pubblicato da Dommer. È stato leggermente testato rispetto ai risultati su http://www.merlyn.demon.co.uk/js-date6.htm#YWD . Si prega di testare accuratamente, nessuna garanzia fornita.

Modifica 2017

Si è verificato un problema con le date durante il periodo in cui è stata osservata l'ora legale e gli anni in cui il 1 gennaio era venerdì. Risolto usando tutti i metodi UTC. Di seguito restituisce risultati identici a Moment.js.

/* For a given date, get the ISO week number
 *
 * Based on information at:
 *
 *    http://www.merlyn.demon.co.uk/weekcalc.htm#WNR
 *
 * Algorithm is to find nearest thursday, it's year
 * is the year of the week number. Then get weeks
 * between that date and the first day of that year.
 *
 * Note that dates in one year can be weeks of previous
 * or next year, overlap is up to 3 days.
 *
 * e.g. 2014/12/29 is Monday in week  1 of 2015
 *      2012/1/1   is Sunday in week 52 of 2011
 */
function getWeekNumber(d) {
    // Copy date so don't modify original
    d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
    // Set to nearest Thursday: current date + 4 - current day number
    // Make Sunday's day number 7
    d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
    // Get first day of year
    var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
    // Calculate full weeks to nearest Thursday
    var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
    // Return array of year and week number
    return [d.getUTCFullYear(), weekNo];
}

var result = getWeekNumber(new Date());
document.write('It\'s currently week ' + result[1] + ' of ' + result[0]);

Le ore vengono azzerate durante la creazione della data "UTC".

Versione prototipo minimizzata (restituisce solo il numero della settimana):

Date.prototype.getWeekNumber = function(){
  var d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate()));
  var dayNum = d.getUTCDay() || 7;
  d.setUTCDate(d.getUTCDate() + 4 - dayNum);
  var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
  return Math.ceil((((d - yearStart) / 86400000) + 1)/7)
};

document.write('The current ISO week number is ' + new Date().getWeekNumber());

Sezione test

In questa sezione, puoi inserire qualsiasi data nel formato AAAA-MM-GG e verificare che questo codice fornisca lo stesso numero di settimana del numero di settimana ISO Moment.js (testato per 50 anni dal 2000 al 2050).

Date.prototype.getWeekNumber = function(){
  var d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate()));
  var dayNum = d.getUTCDay() || 7;
  d.setUTCDate(d.getUTCDate() + 4 - dayNum);
  var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
  return Math.ceil((((d - yearStart) / 86400000) + 1)/7)
};

function checkWeek() {
  var s = document.getElementById('dString').value;
  var m = moment(s, 'YYYY-MM-DD');
  document.getElementById('momentWeek').value = m.format('W');
  document.getElementById('answerWeek').value = m.toDate().getWeekNumber();      
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Enter date  YYYY-MM-DD: <input id="dString" value="2021-02-22">
<button onclick="checkWeek(this)">Check week number</button><br>
Moment: <input id="momentWeek" readonly><br>
Answer: <input id="answerWeek" readonly>


8
Questo codice calcola il 2 gennaio 2011 come 53a settimana del 2010, dove dovrebbe essere la 52a. Funziona correttamente nel codice originale ma non nel tuo adattamento.
Alasdair,

4
Mi hai salvato il culo. Grazie. Se vuoi contribuire a Open Source, ti suggerisco di creare una patch per il metodo dell'interfaccia utente jQuery: $ .datepicker.iso8601Week (data) in quanto restituisce solo weekNo, ma nessun anno.
Christian,

18
Oggi, 4 gennaio 2016, ho notato che era necessario aggiungere d.setMilliseconds(0)anche - continuava a mostrare numeri di settimana diversi per la stessa data a seconda che avessi usato la nuova Data () o la nuova Data ("1/4/2016"). Solo un avvertimento per gli altri che potrebbero provare lo stesso.
Jacob Lauritzen,

2
Il codice fornito non segue ISO 8601, è disattivato da uno
Eric Grange,

2
Oops hai ragione, il mio errore di battitura, doveva essere '30-12-2015' che funziona.
Alleato


26

Come detto sopra ma senza una classe:

let now = new Date();
let onejan = new Date(now.getFullYear(), 0, 1);
week = Math.ceil( (((now - onejan) / 86400000) + onejan.getDay() + 1) / 7 );

4
uno-jan-tang! * ninja-roll *
CodeManX

2
Questa è l'unica risposta che recupera il numero di settimana corretto anche per la prima settimana di un anno.
PrasadW

Nota da fare (now.getTime() - onejan.getTime())per evitare problemi di compilazione.
Swoox,

4
La domanda ha richiesto ISO 8601 che questo ignora. Come risposta alla domanda è semplicemente sbagliato
accadere il

23

Accordily http://javascript.about.com/library/blweekyear.htm

Date.prototype.getWeek = function() {
    var onejan = new Date(this.getFullYear(),0,1);
    var millisecsInDay = 86400000;
    return Math.ceil((((this - onejan) /millisecsInDay) + onejan.getDay()+1)/7);
};

1
Conciso, ma considera la domenica come il primo giorno della settimana, quindi domenica 27 dicembre 2015 è il primo giorno della settimana 53 anziché l'ultimo giorno della settimana 52.
RobG

3
penso che dal momento che questo viene aggiunto al prototipo è quello che ti aspetteresti dal momento che Date considera la domenica come il primo giorno.
Ed Sykes,

Non ci saranno problemi nei giorni dell'ora legale? Penso che non avanzerà fino all'01: 00 durante l'estate.
Hafthor,

Inoltre, questo tecnicamente non anticipa la settimana fino alle 0:00: 00:00? Meglio usare Math.floor?
Hafthor,

11

La Date.format()libreria di Jacob Wright implementa la formattazione della data nello stile della date()funzione di PHP e supporta il numero della settimana ISO-8601:

new Date().format('W');

Potrebbe essere un po 'eccessivo per solo un numero di settimana, ma supporta la formattazione in stile PHP ed è abbastanza utile se farai molto di questo.


Buona soluzione per gli script tratteggiati rapidamente :)
Steen Schütt,

6
getWeekOfYear: function(date) {
        var target = new Date(date.valueOf()),
            dayNumber = (date.getUTCDay() + 6) % 7,
            firstThursday;

        target.setUTCDate(target.getUTCDate() - dayNumber + 3);
        firstThursday = target.valueOf();
        target.setUTCMonth(0, 1);

        if (target.getUTCDay() !== 4) {
            target.setUTCMonth(0, 1 + ((4 - target.getUTCDay()) + 7) % 7);
        }

        return Math.ceil((firstThursday - target) /  (7 * 24 * 3600 * 1000)) + 1;
    }

Il codice seguente è indipendente dal fuso orario (date UTC utilizzate) e funziona in base a https://en.wikipedia.org/wiki/ISO_8601


4

Ho trovato utile la classe SimpleDateFormat di Java SE descritta nelle specifiche di Oracle: http://goo.gl/7MbCh5 . Nel mio caso in Google Apps Script ha funzionato così:

function getWeekNumber() {
  var weekNum = parseInt(Utilities.formatDate(new Date(), "GMT", "w"));
  Logger.log(weekNum);
}

Ad esempio, in una macro di fogli di calcolo è possibile recuperare il fuso orario effettivo del file:

function getWeekNumber() {
  var weekNum = parseInt(Utilities.formatDate(new Date(), SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "w"));
  Logger.log(weekNum);
}

4

Ciò aggiunge il metodo "getWeek" a Date.prototype che restituisce il numero della settimana dall'inizio dell'anno. L'argomento definisce quale giorno della settimana considerare il primo. Se non viene superato alcun argomento, si presume che il primo giorno sia domenica.

/**
 * Get week number in the year.
 * @param  {Integer} [weekStart=0]  First day of the week. 0-based. 0 for Sunday, 6 for Saturday.
 * @return {Integer}                0-based number of week.
 */
Date.prototype.getWeek = function(weekStart) {
    var januaryFirst = new Date(this.getFullYear(), 0, 1);
    if(weekStart !== undefined && (typeof weekStart !== 'number' || weekStart % 1 !== 0 || weekStart < 0 || weekStart > 6)) {
      throw new Error('Wrong argument. Must be an integer between 0 and 6.');
    }
    weekStart = weekStart || 0;
    return Math.floor((((this - januaryFirst) / 86400000) + januaryFirst.getDay() - weekStart) / 7);
};

1
La prima settimana di calendario del 2016 inizia in Germania il 4 gennaio , ma la funzione riprende a contare da 0 dal 1 ° gennaio in poi. Restituisce anche numeri errati alla fine dell'anno, ad esempio 52 per 31-11-2018 (53a settimana), sebbene sia già la prima settimana di calendario del 2019 : new Date(Date.UTC(2018,11, 31)).getWeek(1)+1(lunedì è il 1o giorno della settimana in Germania).
CodeManX,

È così che è stato inteso, ed è, credo, il caso d'uso più probabile. Altrimenti cadono i primi 3 giorni del 2016. I primi giorni del mese sono considerati come la prima settimana di quel mese, indipendentemente da quali e quanti giorni ci siano. Se hai bisogno che la funzione funzioni in modo diverso, puoi modificarla in base alle tue esigenze. Allo stesso modo, se una settimana cade sia nell'anno dato che nell'anno successivo, può essere chiamata l'ultima settimana di quell'anno, nonché la prima settimana dell'anno successivo (secondo la logica attuale).
Tigran,

Grazie per le informazioni. Ho finito per usare la soluzione RobG, che implementa correttamente le date della settimana ISO8601 (gli ultimi giorni a dicembre e i primi giorni a gennaio possono appartenere alla settimana 52, 53 o 1: en.m.wikipedia.org/wiki/ISO_week_date
CodeManX

4

Ottieni il numero della settimana di una determinata data

function week(year,month,day) {
    function serial(days) { return 86400000*days; }
    function dateserial(year,month,day) { return (new Date(year,month-1,day).valueOf()); }
    function weekday(date) { return (new Date(date)).getDay()+1; }
    function yearserial(date) { return (new Date(date)).getFullYear(); }
    var date = year instanceof Date ? year.valueOf() : typeof year === "string" ? new Date(year).valueOf() : dateserial(year,month,day), 
        date2 = dateserial(yearserial(date - serial(weekday(date-serial(1))) + serial(4)),1,3);
    return ~~((date - date2 + serial(weekday(date2) + 5))/ serial(7));
}

Esempio

console.log(
    week(2016, 06, 11),//23
    week(2015, 9, 26),//39
    week(2016, 1, 1),//53
    week(2016, 1, 4),//1
    week(new Date(2016, 0, 4)),//1
    week("11 january 2016")//2
);

1
Non ci posso credere, ma questa funzione è l'unica che ha sempre funzionato! La risposta accettata è emersa quando è passata l'ora legale, altri hanno detto "0" come numero della settimana in determinati anni. - e alcuni si basavano su funzioni UTC che a volte restituivano il giorno precedente assegnandole quindi la settimana '53' o '54'. Purtroppo ho bisogno che la settimana inizi di domenica e questo codice è molto difficile da capire ...
Melissa Zachariadis,

@MelissaZachariadis ha detto I need the week to begin on a Sunday; Penso che l'unica modifica necessaria sia nella funzione giorno della settimana () .getDay()+1da cambiare in.getDay()
Rafa,

4

Il codice seguente calcola il numero di settimana ISO 8601 corretto. date("W")Corrisponde a PHP per ogni settimana tra 1/1/1970 e 1/1/2100.

/**
 * Get the ISO week date week number
 */
Date.prototype.getWeek = function () {
  // Create a copy of this date object
  var target = new Date(this.valueOf());

  // ISO week date weeks start on Monday, so correct the day number
  var dayNr = (this.getDay() + 6) % 7;

  // ISO 8601 states that week 1 is the week with the first Thursday of that year
  // Set the target date to the Thursday in the target week
  target.setDate(target.getDate() - dayNr + 3);

  // Store the millisecond value of the target date
  var firstThursday = target.valueOf();

  // Set the target to the first Thursday of the year
  // First, set the target to January 1st
  target.setMonth(0, 1);

  // Not a Thursday? Correct the date to the next Thursday
  if (target.getDay() !== 4) {
    target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
  }

  // The week number is the number of weeks between the first Thursday of the year
  // and the Thursday in the target week (604800000 = 7 * 24 * 3600 * 1000)
  return 1 + Math.ceil((firstThursday - target) / 604800000);
}

Fonte: Taco van den Broek


Se non ti piacciono i prototipi estesi, ecco una funzione:

function getWeek(date) {
  if (!(date instanceof Date)) date = new Date();

  // ISO week date weeks start on Monday, so correct the day number
  var nDay = (date.getDay() + 6) % 7;

  // ISO 8601 states that week 1 is the week with the first Thursday of that year
  // Set the target date to the Thursday in the target week
  date.setDate(date.getDate() - nDay + 3);

  // Store the millisecond value of the target date
  var n1stThursday = date.valueOf();

  // Set the target to the first Thursday of the year
  // First, set the target to January 1st
  date.setMonth(0, 1);

  // Not a Thursday? Correct the date to the next Thursday
  if (date.getDay() !== 4) {
    date.setMonth(0, 1 + ((4 - date.getDay()) + 7) % 7);
  }

  // The week number is the number of weeks between the first Thursday of the year
  // and the Thursday in the target week (604800000 = 7 * 24 * 3600 * 1000)
  return 1 + Math.ceil((n1stThursday - date) / 604800000);
}

Esempio di utilizzo:

getWeek(); // Returns 37 (or whatever the current week is)
getWeek(new Date('Jan 2, 2011')); // Returns 52
getWeek(new Date('Jan 1, 2016')); // Returns 53
getWeek(new Date('Jan 4, 2016')); // Returns 1

Mi piace questa funzione, ma ho una domanda; Cosa devo fare se voglio rimetterlo di domenica? Non ho idea di cosa +6 ) % 7faccia la parte. Grazie da uno scrub!
NoobishPro,

1
Settimana @Babydead ISO inizia su un Lunedi, ma JavaScript getDay()inizia di Domenica, quindi se si vuole che inizi la Domenica è possibile rimuovere la correzione:var nDay = date.getDay();
thdoan

Ho provato oltre 8 diverse implementazioni JS per ottenere il numero della settimana. Questa è l'unica funzione che funziona, ma solo se cambio tutti i getter e setter in getUTC .. e setUTC .. Non so perché. Stavo testando con questo: 2017-07-17T00: 00: 00.000Z (settimana 29) 2017-07-23T23: 59: 59.000Z (settimana 29) 2021-01-04T00: 00: 00.000Z (settimana 1)
psycho dal


2

Lo snippet di codice che funziona abbastanza bene per me è questo:

var yearStart = +new Date(d.getFullYear(), 0, 1);
var today = +new Date(d.getFullYear(),d.getMonth(),d.getDate());
var dayOfYear = ((today - yearStart + 1) / 86400000);
return Math.ceil(dayOfYear / 7).toString();

Nota:
dè la mia data per la quale desidero il numero della settimana corrente.
Le +converte le date in numeri (lavorando con dattiloscritto).


1

Ecco la mia implementazione per il calcolo del numero della settimana in JavaScript. corretto anche per gli offset dell'ora legale e invernale. Ho usato la definizione della settimana da questo articolo: ISO 8601

Le settimane vanno dal lunedì alla domenica e il 4 gennaio è sempre la prima settimana dell'anno.

// add get week prototype functions
// weeks always start from monday to sunday
// january 4th is always in the first week of the year
Date.prototype.getWeek = function () {
    year = this.getFullYear();
    var currentDotw = this.getWeekDay();
    if (this.getMonth() == 11 && this.getDate() - currentDotw > 28) {
        // if true, the week is part of next year 
        return this.getWeekForYear(year + 1);
    }
    if (this.getMonth() == 0 && this.getDate() + 6 - currentDotw < 4) {
        // if true, the week is part of previous year
        return this.getWeekForYear(year - 1);
    }
    return this.getWeekForYear(year);
}

// returns a zero based day, where monday = 0
// all weeks start with monday
Date.prototype.getWeekDay = function () {
    return  (this.getDay() + 6) % 7;
}

// corrected for summer/winter time
Date.prototype.getWeekForYear = function (year) {
    var currentDotw = this.getWeekDay();
    var fourjan = new Date(year, 0, 4);
    var firstDotw = fourjan.getWeekDay();
    var dayTotal = this.getDaysDifferenceCorrected(fourjan) // the difference in days between the two dates.
    // correct for the days of the week
    dayTotal += firstDotw; // the difference between the current date and the first monday of the first week, 
    dayTotal -= currentDotw; // the difference between the first monday and the current week's monday
    // day total should be a multiple of 7 now
    var weeknumber = dayTotal / 7 + 1; // add one since it gives a zero based week number.
    return weeknumber;
}

// corrected for timezones and offset
Date.prototype.getDaysDifferenceCorrected = function (other) {
    var millisecondsDifference = (this - other);
    // correct for offset difference. offsets are in minutes, the difference is in milliseconds
    millisecondsDifference += (other.getTimezoneOffset()- this.getTimezoneOffset()) * 60000;
    // return day total. 1 day is 86400000 milliseconds, floor the value to return only full days
    return Math.floor(millisecondsDifference / 86400000);
}

per i test ho usato i seguenti test JavaScript in Qunit

var runweekcompare = function(result, expected) {
    equal(result, expected,'Week nr expected value: ' + expected + ' Actual value: ' + result);
}

test('first week number test', function () {
    expect(5);
    var temp = new Date(2016, 0, 4); // is the monday of the first week of the year
    runweekcompare(temp.getWeek(), 1);
    var temp = new Date(2016, 0, 4, 23, 50); // is the monday of the first week of the year
    runweekcompare(temp.getWeek(), 1);
    var temp = new Date(2016, 0, 10, 23, 50); // is the sunday of the first week of the year
    runweekcompare(temp.getWeek(), 1);
    var temp = new Date(2016, 0, 11, 23, 50); // is the second week of the year
    runweekcompare(temp.getWeek(), 2);
    var temp = new Date(2016, 1, 29, 23, 50); // is the 9th week of the year
    runweekcompare(temp.getWeek(), 9);
});

test('first day is part of last years last week', function () {
    expect(2);
    var temp = new Date(2016, 0, 1, 23, 50); // is the first last week of the previous year
    runweekcompare(temp.getWeek(), 53);
    var temp = new Date(2011, 0, 2, 23, 50); // is the first last week of the previous year
    runweekcompare(temp.getWeek(), 52);
});

test('last  day is part of next years first week', function () {
    var temp = new Date(2013, 11, 30); // is part of the first week of 2014
    runweekcompare(temp.getWeek(), 1);
});

test('summer winter time change', function () {
    expect(2);
    var temp = new Date(2000, 2, 26); 
    runweekcompare(temp.getWeek(), 12);
    var temp = new Date(2000, 2, 27); 
    runweekcompare(temp.getWeek(), 13);
});

test('full 20 year test', function () {
    //expect(20 * 12 * 28 * 2);
    for (i = 2000; i < 2020; i++) {
        for (month = 0; month < 12; month++) {
            for (day = 1; day < 29 ; day++) {
                var temp = new Date(i, month, day);
                var expectedweek = temp.getWeek();
                var temp2 = new Date(i, month, day, 23, 50);
                var resultweek = temp.getWeek();
                equal(expectedweek, Math.round(expectedweek), 'week number whole number expected ' + Math.round(expectedweek) + ' resulted week nr ' + expectedweek);
                equal(resultweek, expectedweek, 'Week nr expected value: ' + expectedweek + ' Actual value: ' + resultweek + ' for year ' + i + ' month ' + month + ' day ' + day);
            }
        }
    }
});

0

Questa settimana la cosa numero è stata una vera sofferenza nell'a **. La maggior parte degli script in rete non ha funzionato per me. Hanno funzionato la maggior parte del tempo, ma tutti si sono rotti in qualche punto, soprattutto quando l'anno è cambiato e l'ultima settimana dell'anno è stata improvvisamente la prima settimana del prossimo anno ecc. Anche il filtro data di Angular ha mostrato dati errati (era la prima settimana del prossimo anno, settimana 53).

Nota: gli esempi sono progettati per funzionare con settimane europee (lunedì prima)!

getWeek ()

Date.prototype.getWeek = function(){

    // current week's Thursday
    var curWeek = new Date(this.getTime());
        curWeek.setDay(4);

    // Get year's first week's Thursday
    var firstWeek = new Date(curWeek.getFullYear(), 0, 4);
        firstWeek.setDay(4);

    return (curWeek.getDayIndex() - firstWeek.getDayIndex()) / 7 + 1;
};

setDay ()

/**
* Make a setDay() prototype for Date
* Sets week day for the date
*/
Date.prototype.setDay = function(day){

    // Get day and make Sunday to 7
    var weekDay = this.getDay() || 7;
    var distance = day - weekDay;
    this.setDate(this.getDate() + distance);

    return this;
}

getDayIndex ()

/*
* Returns index of given date (from Jan 1st)
*/

Date.prototype.getDayIndex = function(){
    var start = new Date(this.getFullYear(), 0, 0);
    var diff = this - start;
    var oneDay = 86400000;

    return Math.floor(diff / oneDay);
};

Ho provato questo e sembra funzionare molto bene, ma se noti un difetto, per favore fatemelo sapere.


0

Ho provato molto a ottenere il codice più breve per ottenere il numero di settimana ISO-conforme.

Date.prototype.getWeek=function(){
    var date=new Date(this);
    date.setHours(0,0,0,0);
    return Math.round(((date.setDate(this.getDate()+2-(this.getDay()||7))-date.setMonth(0,4))/8.64e7+3+(date.getDay()||7))/7)+"/"+date.getFullYear();}

La variabile dateè necessaria per evitare di alterare l'originale this. Ho usato i valori di ritorno di setDate()e setMonth()per fare getTime()a meno di salvare la lunghezza del codice e ho usato un numero espontiale per millisecondi di un giorno anziché una moltiplicazione di singoli elementi o un numero con cinque zeri. thisè la data o il numero di millisecondi, il valore di ritorno è Stringad es. "49/2017".



0

Un'altra opzione basata su libreria: usare d3-time-format:

const formatter = d3.timeFormat('%U');
const weekNum = formatter(new Date());

0

Soluzione alternativa più breve per Angular2 + DatePipe, adattata per ISO-8601:

import {DatePipe} from "@angular/common";

public rightWeekNum: number = 0;
  
constructor(private datePipe: DatePipe) { }
    
calcWeekOfTheYear(dateInput: Date) {
  let falseWeekNum = parseInt(this.datePipe.transform(dateInput, 'ww'));
  this.rightWeekNum = (dateInput.getDay() == 0) ? falseWeekNumber-1 : falseWeekNumber;
}

-1
now = new Date();
today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
firstOfYear = new Date(now.getFullYear(), 0, 1);
numOfWeek = Math.ceil((((today - firstOfYear) / 86400000)-1)/7);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.