Preciso da maneira mais rápida de obter o primeiro dia da semana. Por exemplo: hoje é 11 de novembro e quinta-feira; e eu quero o primeiro dia desta semana, que é 8 de novembro, e uma segunda-feira. Preciso do método mais rápido para a função de mapa do MongoDB, alguma idéia?
javascript
algorithm
INs
fonte
fonte
Respostas:
Usando o
getDay
método de objetos Date, você pode saber o número do dia da semana (sendo 0 = domingo, 1 = segunda-feira etc.).Você pode subtrair esse número de dias mais um, por exemplo:
fonte
diff = d.getDate() - day;
d.setHours(0); d.setMinutes(0); d.setSeconds(0);
Não tenho certeza de como ele se compara ao desempenho, mas isso funciona.
Ou como uma função:
fonte
date = new Date(date);
como a primeira linha na função getMonday.Confira Date.js
fonte
Date.parse('last monday');
A resposta do CMS está correta, mas assume que segunda-feira é o primeiro dia da semana.
A resposta de Chandler Zwolle está correta, mas brinca com o protótipo de Data.
Outras respostas que tocam com hora / minutos / segundos / milissegundos estão incorretas.
A função abaixo está correta e assume uma data como primeiro parâmetro e o primeiro dia da semana desejado como segundo parâmetro (0 para domingo, 1 para segunda-feira etc.). Nota: a hora, minutos e segundos são definidos como 0 para ter o início do dia.
fonte
Isso vai funcionar bem.
fonte
Estou usando isso
fonte
Essa função usa o tempo atual de milissegundos para subtrair a semana atual e subtrai mais uma semana se a data atual estiver em uma segunda-feira (o javascript conta no domingo).
Eu testei quando a semana se estende de um mês para outro (e também anos), e parece funcionar corretamente.
fonte
Boa noite,
Eu prefiro ter apenas um método de extensão simples:
Você notará que isso realmente utiliza outro método de extensão que eu uso:
Agora, se suas semanas começarem no domingo, passe um "0" para o parâmetro pStartOfWeek, assim:
var mThisSunday = new Date().startOfWeek(0);
Da mesma forma, se suas semanas começarem na segunda-feira, passe um "1" para o parâmetro pStartOfWeek:
var mThisMonday = new Date().startOfWeek(1);
Saudações,
fonte
Primeiro dia da semana
Para obter a data do primeiro dia da semana a partir de hoje, você pode usar algo como:
Ou para obter o último dia da semana a partir de hoje:
* Dependendo do seu fuso horário, o início da semana não precisa começar no domingo, ele pode começar na sexta, sábado, segunda ou qualquer outro dia em que sua máquina estiver configurada. Esses métodos serão responsáveis por isso.
* Você também pode formatá-lo usando o
toISOString
método da seguinte forma:getLastSunday().toISOString()
fonte
setDate () tem problemas com os limites do mês que são anotados nos comentários acima. Uma solução alternativa é encontrar a diferença de data usando carimbos de data / hora da época em vez dos métodos (surpreendentemente contra-intuitivos) no objeto Date. Ou seja,
fonte
Aqui está a minha solução:
Agora você pode escolher a data pelo índice de matriz retornado.
fonte
Um exemplo do cálculo apenas matematicamente, sem nenhuma
Date
função.fonte
uma versão mais generalizada disso ... isso lhe dará qualquer dia da semana atual, com base no dia que você especificar.
fonte
Confira: moment.js
Exemplo:
Bônus: também funciona com o node.js
fonte
moment().startOf('week')
moment().startOf("week")
pode dar a data do domingo anterior, dependendo das configurações de localidade. Nesse caso, usemoment().startOf('isoWeek')
: runkit.com/embed/wdpi4bjwh6rtstartOf()
: momentjs.com/docs/#/manipulating/start-of