Eu tenho today = new Date();
objeto. Preciso chegar ao primeiro e último dia da semana atual. Preciso das duas variantes para domingo e segunda-feira como dia de início e fim da semana. Estou um pouco confuso agora com um código. Você pode me ajudar?
javascript
date
Petya Petrov
fonte
fonte
var first = curr.getDate() - curr.getDay() +1;
var lastday = new Date(curr.setDate(first.getDate()+6)).toUTCString();
var curr = new Date('2014-10-01T00:00:00'); // 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 firstday = new Date(curr.setDate(first)).toUTCString(); lastday = new Date(curr.setDate(curr.getDate()+6)).toUTCString();
apenas corrigi o código do @RichardN, que está tendo um pequeno erroCuidado com a resposta aceita, ela não ajusta o horário para 00:00:00 e 23:59:59, então você pode ter problemas.
Eu recomendo usar Moment.js para lidar com datas. Para o seu caso:
Este é apenas um pequeno caso de uso, é realmente simples fazer muitas operações complexas.
Você pode ver mais informações aqui: http://momentjs.com/
fonte
var startOfWeek = moment().startOf('isoweek').toDate();
var endOfWeek = moment().endOf('isoweek').toDate();
Você também pode usar as seguintes linhas de código para obter a primeira e a última data da semana:
Espero que seja util..
fonte
Esta é uma maneira rápida de obter o primeiro e o último dia, para qualquer dia inicial. sabendo que:
1 dia = 86.400.000 milissegundos.
Valores de datas JS estão em milissegundos
Receita: descubra quantos dias você precisa remover para obter o dia de início da sua semana (multiplique pelo valor de 1 dia de milissegundos). Tudo o que resta depois disso é adicionar 6 dias para obter o seu dia de término.
fonte
A excelente (e imutável) biblioteca date-fns lida com isso de forma mais concisa:
O dia de início da semana padrão é domingo (0), mas pode ser alterado para segunda-feira (1) desta forma:
fonte
Você poderia fazer algo assim
Onde
startDay
é um número de 0 a 6, onde 0 significa domingo (ou seja, 1 = segunda-feira, 2 = terça-feira, etc).fonte
SetDate
irá definir o dia do mês. UsarsetDate
durante o início e o final do mês resultará em semana erradaSe você definir a data como 01 de julho de 2014, ele mostrará o primeiro dia como 29 de junho de 2014 e o último dia como 05 de junho de 2014 em vez de 05 de julho de 2014
Então supere esse problema que eu usei
fonte
Isso funciona em todas as mudanças de ano e mês.
fonte
Eu recomendo usar Moment.js para esses casos. Tive cenários em que tive que verificar a hora da data atual, esta semana, este mês e a hora da data deste trimestre. A resposta acima me ajudou, então pensei em compartilhar o resto das funções também.
Simplesmente para obter a data / hora atual em um formato específico
A semana começa no domingo e termina no sábado se simplesmente usarmos 'semana' como parâmetro para a função endOf, mas para obter o domingo como o fim da semana, precisamos usar 'isoweek'.
Eu escolhi este formato de acordo com minha necessidade. Você pode alterar o formato de acordo com sua necessidade.
fonte
* data atual == 30.06.2016 e segunda-feira é o primeiro dia da semana.
Também funciona por diferentes meses e anos. Testado com qunit suite:
fonte
Isso será útil para qualquer cenário de data.
fonte
o método de krtek tem alguns erros, eu testei isso
funciona
fonte
Embora a pergunta pareça obsoleta, devo apontar um problema.
Pergunta: O que acontecerá em 1º de janeiro de 2016?
Acho que a maioria das soluções acima calcula o início da semana como 27.12.2016. Por esta razão, eu acho que o cálculo correto deve ser simplesmente como o abaixo;
fonte
Boa sugestão, mas você teve um pequeno problema no último dia. Você deve alterá-lo para:
fonte
A abordagem do momento funcionou para mim em todos os casos (embora eu não tenha testado os limites como final de ano, anos bissextos). Apenas a correção no código acima é o parâmetro "isoWeek", se você quiser começar a semana a partir de segunda-feira.
fonte
Apenas usando javascript puro, você pode usar a função abaixo para obter o primeiro dia e o último dia da semana com a configuração livre do dia para o início da semana.
O último dia da semana é apenas 6 dias após o primeiro dia da semana
Teste:
fonte
JavaScript
TypeScript
fonte
Nós adicionamos o código jquery que mostra a semana atual de dias de segunda a domingo.
fonte
Uma pergunta antiga com muitas respostas, então outra não será um problema. Algumas funções gerais para obter o início e o fim de todos os tipos de unidades de tempo.
Para startOf e endOf week, o dia de início da semana é padronizado como domingo (0), mas qualquer dia pode ser passado (segunda-feira - 1, terça - 2, etc.). No entanto, usa apenas o calendário gregoriano.
As funções não alteram a data de origem, portanto, para ver se uma data está na mesma semana que alguma outra data (semana começando na segunda-feira):
ou na semana atual começando no domingo:
fonte
Pequena mudança na resposta de @Chris Lang. se você quiser segunda-feira como o primeiro dia, use isso.
Thaks @Chris Lang
fonte