Como obtenho o número da semana atual do ano, como o PHP date('W')
?
Deve ser o número de semanas ISO-8601 do ano, semanas a partir de segunda-feira.
javascript
date
PeeHaa
fonte
fonte
Respostas:
Você deve conseguir o que deseja aqui:
http://www.merlyn.demon.co.uk/js-date6.htm#YWD.Um link melhor no mesmo site é:
Trabalhando com semanas.Editar
Aqui está um código com base nos links fornecidos e no eariler publicado por Dommer. Foi levemente testado em relação aos resultados em
http://www.merlyn.demon.co.uk/js-date6.htm#YWD. Por favor, teste minuciosamente, nenhuma garantia fornecida.Edit 2017
Houve um problema com as datas durante o período em que o horário de verão foi observado e os anos em que 1 de janeiro era sexta-feira. Corrigido usando todos os métodos UTC. A seguir, resultados idênticos ao Moment.js.
As horas são zeradas ao criar a data "UTC".
Versão protótipo minimizada (retorna apenas o número da semana):
Seção de teste
Nesta seção, você pode inserir qualquer data no formato AAAA-MM-DD e verificar se esse código fornece o mesmo número da semana que o número ISO da semana Moment.js ISO (testado em 50 anos entre 2000 e 2050).
fonte
d.setMilliseconds(0)
também - continuava mostrando números de semanas diferentes para a mesma data, dependendo se eu usava nova Data () ou nova Data ("1/4/2016"). Apenas um alerta para outros que podem experimentar o mesmo.Você também pode usar a biblioteca momentjs:
moment().format('W')
fonte
moment().week()
Como dito acima, mas sem uma classe:
fonte
(now.getTime() - onejan.getTime())
para evitar problemas de construção.Accordily http://javascript.about.com/library/blweekyear.htm
fonte
A
Date.format()
biblioteca de Jacob Wright implementa a formatação de data no estilo dadate()
função do PHP e suporta o número da semana ISO-8601:Pode ser um pouco exagerado por apenas um número de semana, mas suporta a formatação no estilo PHP e é bastante útil se você estiver fazendo muito disso.
fonte
O código a seguir é independente do fuso horário (são utilizadas as datas UTC) e funciona de acordo com o https://en.wikipedia.org/wiki/ISO_8601
fonte
Achei útil a classe SimpleDateFormat do Java SE descrita na especificação da Oracle: http://goo.gl/7MbCh5 . No meu caso, no Script do Google Apps, funcionou assim:
Por exemplo, em uma macro de planilha, você pode recuperar o fuso horário real do arquivo:
fonte
Isso adiciona o método "getWeek" ao Date.prototype, que retorna o número da semana desde o início do ano. O argumento define qual dia da semana considerar o primeiro. Se nenhum argumento for aprovado, o primeiro dia será assumido no domingo.
fonte
new Date(Date.UTC(2018,11, 31)).getWeek(1)+1
(segunda-feira é o 1º dia da semana na Alemanha).Obter o número da semana de qualquer data
Exemplo
fonte
I need the week to begin on a Sunday
; Eu acho que a mudança só necessário é em função da semana () 's.getDay()+1
de ser alterado para.getDay()
O código abaixo calcula o número da semana ISO 8601 correto. Ele corresponde ao PHP
date("W")
para todas as semanas entre 1/1/1970 e 1/1/2100.Fonte: Taco van den Broek
Se você não gosta de estender protótipos, aqui está uma função:
Uso da amostra:
fonte
+6 ) % 7
parte faz. Obrigado por uma esfoliação!getDay()
começa no domingo, portanto, se você quiser que comece no domingo, poderá remover a correção:var nDay = date.getDay();
Se você já estiver em um projeto Angular, poderá usar
$filter('date')
.Por exemplo:
fonte
O trecho de código que funciona muito bem para mim é este:
Nota:
d
é a minha data para a qual desejo o número da semana atual.O
+
converte as datas em números (trabalhando com TypeScript).fonte
Aqui está minha implementação para calcular o número da semana em JavaScript. corrigido também para as compensações no horário de verão e inverno. Eu usei a definição da semana deste artigo: ISO 8601
As semanas são de segunda a domingo e o dia 4 de janeiro é sempre a primeira semana do ano.
para teste, usei os seguintes testes JavaScript no Qunit
fonte
O número desta semana tem sido uma verdadeira dor no a **. A maioria dos scripts da rede não funcionou para mim. Eles trabalharam a maior parte do tempo, mas todos quebraram em algum momento, especialmente quando o ano mudou e a última semana do ano foi repentinamente a primeira semana do próximo ano etc. semana 53).
Nota: Os exemplos foram criados para funcionar com semanas europeias (segunda-feira primeiro)!
getWeek ()
setDay ()
getDayIndex ()
Eu testei isso e parece estar funcionando muito bem, mas se você notar uma falha, informe-me.
fonte
Tentei muito obter o código mais curto para obter o número da semana conforme a ISO.
A variável
date
é necessária para evitar alterar o originalthis
. Usei os valores de retorno desetDate()
esetMonth()
dispensogetTime()
para economizar o comprimento do código e usei um número expontial por milissegundos de dia em vez de uma multiplicação de elementos únicos ou um número com cinco zeros.this
é Data ou Número de milissegundos, o valor de retorno é,String
por exemplo, "49/2017".fonte
Com o Luxon ( https://github.com/moment/luxon ):
fonte
Outra opção baseada em biblioteca: use
d3-time-format
:fonte
Solução mais curta para Angular2 + DatePipe, ajustado para ISO-8601:
fonte
fonte