ti-enxame.com

Obter data de início e data de término da semana atual (início da semana a partir de segunda e fim com domingo)

Quero exibir a data de início e a data final da semana atual. (começo de semana = segunda-feira, fim de semana = domingo) Consigo exibir segunda-feira. 

Mas eu sou incapaz de obter a data do domingo. Por favor, poste-me se alguém tiver solução. 

15
Vishnu
<script>
Date.prototype.getWeek = function(start)
{
        //Calcing the starting point
    start = start || 0;
    var today = new Date(this.setHours(0, 0, 0, 0));
    var day = today.getDay() - start;
    var date = today.getDate() - day;

        // Grabbing Start/End Dates
    var StartDate = new Date(today.setDate(date));
    var EndDate = new Date(today.setDate(date + 6));
    return [StartDate, EndDate];
}

// test code
var Dates = new Date().getWeek();
alert(Dates[0].toLocaleDateString() + ' to '+ Dates[1].toLocaleDateString())
</script>

Eu acredito que isso funciona.

31
ReadWriteCode

A seguinte função fará o truque:

// return an array of date objects for start (monday)
// and end (sunday) of week based on supplied 
// date object or current date
function startAndEndOfWeek(date) {

  // If no date object supplied, use current date
  // Copy date so don't modify supplied date
  var now = date? new Date(date) : new Date();

  // set time to some convenient value
  now.setHours(0,0,0,0);

  // Get the previous Monday
  var monday = new Date(now);
  monday.setDate(monday.getDate() - monday.getDay() + 1);

  // Get next Sunday
  var sunday = new Date(now);
  sunday.setDate(sunday.getDate() - sunday.getDay() + 7);

  // Return array of date objects
  return [monday, sunday];
}

// Mon Nov 12 2012 00:00:00
// Sun Nov 18 2012 00:00:00
alert(startAndEndOfWeek(new Date(2012,10,14)).join('\n'));
11
RobG

Tente isto:

var current = new Date();     // get current date    
var weekstart = current.getDate() - current.getDay() +1;    
var weekend = weekstart + 6;       // end day is the first day + 6 
var monday = new Date(current.setDate(weekstart));  
var sunday = new Date(current.setDate(weekend));
9
Rawat Raman

SetDate define o dia do mês. Usar setDate durante o início e o final do mês resultará em uma semana errada

var curr = new Date("08-Jul-2014"); // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var firstday = new Date(curr.setDate(first)); // 06-Jul-2014
var lastday = new Date(curr.setDate(last)); // 12-Jul-2014

Se a data de configuração for 01-jul-2014, será exibido o primeiro dia como 29-jun-2014 e lastday como 05-jun-2014 em vez de 05-jul-2014. Então, para superar esse problema eu usei

var curr = new Date();
day = curr.getDay();
firstday = new Date(curr.getTime() - 60*60*24* day*1000); // will return firstday (i.e. Sunday) of the week
lastday = new Date(curr.getTime() + 60 * 60 *24 * 6 * 1000); // adding (60*60*6*24*1000) means adding six days to the firstday which results in lastday (Saturday) of the week
3
Orchid

Nos outros exemplos, você terá um problema quando o domingo cair no outro mês. Isso deve resolver o problema:

var today, todayNumber, mondayNumber, sundayNumber, monday, sunday;
    today = new Date();
    todayNumber = today.getDay();
    mondayNumber = 1 - todayNumber;
    sundayNumber = 7 - todayNumber;
    monday = new Date(today.getFullYear(), today.getMonth(), today.getDate()+mondayNumber);
    sunday = new Date(today.getFullYear(), today.getMonth(), today.getDate()+sundayNumber);
2
Lars de Weert

Com base na resposta da RobG, acabei com isso para começar a semana para começar na meia-noite de segunda-feira e terminar no domingo 23: 59: 59.999.

  var weekMap = [6, 0, 1, 2, 3, 4, 5];

  function startAndEndOfWeek(date) {
    var now = new Date(date);
    now.setHours(0, 0, 0, 0);
    var monday = new Date(now);
    monday.setDate(monday.getDate() - weekMap[monday.getDay()]);
    var sunday = new Date(now);
    sunday.setDate(sunday.getDate() - weekMap[sunday.getDay()] + 6);
    sunday.setHours(23, 59, 59, 999);
    return [monday, sunday];
  }
1
jo2

Resposta ligeiramente modificada de @ReadWriteCode, isso também funciona com sucesso em meses diferentes.

Date.prototype.getWeek = function()
{
    var today = new Date();
    var day = today.getDay();
    var date = today.getDate() - day;

        // Grabbing Start/End Dates
    var StartDate = new Date();
    var EndDate = new Date();
    StartDate.setHours(0,0,0,0); EndDate.setHours(0,0,0,0);
    StartDate.setDate(today.getDate()-day);
    EndDate.setDate(today.getDate()-day+6);
    return {
        startDate:StartDate,
        endDate: EndDate
    };
} 
var thisWeekDates=new Date().getWeek();
1
Rajat Sawant

Espero que isso funcione para você:

Date.prototype.getWeekEndDate = function () {
    diff = 6 - this.getDay();
    if (diff < 0) {
        diff += 6;
    }
    this.setDate(this.getDate() + (1 * diff));
    return this;
}
Date.prototype.getWeekStartDate = function () {
    diff = this.getDay() - 6;
    if (diff < 0) {
        diff += 7;
    }
    return this.setDate(this.getDate() + (-1 * diff));
}

Esse método retornará a data de início e a data de término da semana.

0
Shivam Chopra

Você pode modificar o valor de retorno para atender às suas necessidades, agora apenas retorna o objeto completo do domingo.

Date.prototype.endWeek=function(){
  return new Date(this.getFullYear(), this.getMonth(),(7-this.getDay())+this.getDate());
}

//call like this
var myDate = new Date(); 
var Sunday = myDate.endWeek();
alert("Sunday falls on "+ Sunday.getDate());
0
anson

Usando https://momentjs.com torna mais simples.

  1. Para obter uma semana começando com o domingo e terminando com o sábado , Então use: moment (). StartOf ("semana"). ToDate () e Moment (). EndOf ("semana"). toDate ()

  2. Para obter uma semana começando com segunda-feira e terminando com domingo , Então use: moment (). StartOf ("isoWeek"). ToDate () e momento (). EndOf ("isoWeek") .Até a presente data()

Tentei isso no momento v2.18.1, funciona.

Espero que isso ajude, para mais você pode consultar momento docs.

0
Thanmai C
  1. Diferentes problemas de meses também são corrigidos com o código abaixo.
  2. Adicionado formato "M.dd.yyyy" função.

    function startAndEndOfWeek (setDate) { var dia = nulo; var date = null; var month = null; var year = null; var mon = null; var tue = nulo; var wed = nulo; var thu = null; var fri = null; var sat = null; var Sun = null;

    var now = setDate ? new Date(setDate) : new Date();
    now.setHours(0,0,0,0);
    
    var monday = new Date(now); var tuesday = new Date(now); var wednesday = new Date(now); var thursday = new Date(now);
    var friday = new Date(now); var saturday = new Date(now); var sunday = new Date(now); 
    
    if(new Date(now).getDay() == 0)
    {
        monday.setDate(monday.getDate() - 6);
        tuesday.setDate(tuesday.getDate() - 5);
        wednesday.setDate(wednesday.getDate() - 4);
        thursday.setDate(thursday.getDate() - 3);
        friday.setDate(friday.getDate() - 2);
        saturday.setDate(saturday.getDate() - 1);
        sunday.setDate(sunday.getDate() - 0);
    }
    else
    {
        monday.setDate(monday.getDate() - monday.getDay() + 1);
        tuesday.setDate(tuesday.getDate() - tuesday.getDay() + 2);
        wednesday.setDate(wednesday.getDate() - wednesday.getDay() + 3);
        thursday.setDate(thursday.getDate() - thursday.getDay() + 4);
        friday.setDate(friday.getDate() - friday.getDay() + 5);
        saturday.setDate(saturday.getDate() - saturday.getDay() + 6);
        sunday.setDate(sunday.getDate() - sunday.getDay() + 7);
    }
    
    date = monday.getDate();
    month = monday.getMonth();
    year = monday.getFullYear();
    mon = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = tuesday.getDate();
    month = tuesday.getMonth();
    year = tuesday.getFullYear();
    tue = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = wednesday.getDate();
    month = wednesday.getMonth();
    year = wednesday.getFullYear();
    wed = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = thursday.getDate();
    month = thursday.getMonth();
    year = thursday.getFullYear();
    thu = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = friday.getDate();
    month = friday.getMonth();
    year = friday.getFullYear();
    fri = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = saturday.getDate();
    month = saturday.getMonth();
    year = saturday.getFullYear();
    sat = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    date = sunday.getDate();
    month = sunday.getMonth();
    year = sunday.getFullYear();
    Sun = getMonthValue(month) + "." + getDateValue(date) + "." +  year;
    
    return [mon, tue , wed, thu, fri, sat, Sun];
    

    }

    function getMonthValue (month) { troca (mês) { caso 0: retorna "Jan"; pausa; caso 1: retornar "Feb"; quebra; caso 2: retornar "Mar"; quebra; caso 3: retornar "Apr"; .____.] quebra; caso 4: retorne "May"; break; case 5: retorne "Jun"; break; caso 6: retorne "Jul"; quebra; caso 7: retorne "Aug"; quebra; caso 8: retorne "Sep"; quebra; caso 9: retorne "Oct"; quebra; caso 10: retorne "Nov"; quebra; caso 11: retornar "Dec"; pausa; } } função getDateValue (dia) { se (parseInt (dia) <10) { retornar "0" + dia; } dia de retorno; }

0
Atul