Surpreende-me que o objeto Date do JavaScript não implemente uma função add de qualquer tipo.
Eu simplesmente quero uma função que pode fazer isso:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Eu simplesmente gostaria de algumas dicas em uma direção.
Preciso fazer uma análise de string?
Posso usar o setTime?
Que tal milissegundos?
Como isso:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Isso parece realmente tolo - e isso funciona?
javascript
datetime
Jeff Meatball Yang
fonte
fonte
Teste:
fonte
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
Ele também funciona bem com setMinutes ()O código abaixo é adicionar 4 horas até a data (exemplo, a data de hoje)
Não causará erros se você tentar adicionar de 4 a 23 (consulte a documentação ):
fonte
setTime
ousetUTCHour
.Provavelmente é melhor tornar o método addHours imutável retornando uma cópia do objeto Date em vez de alterar seu parâmetro.
Dessa forma, você pode encadear várias chamadas de método sem se preocupar com o estado.
fonte
add*
é comumente usada para alterar o próprio objeto.add
é usado no framework .NETDateTime
classe de e tem o mesmo significado que o+
(mais) em Math.currentDate.addHours(1)
<- Do meu instinto de programação, espero que ocurrentDate
valor mude, mas na sua implementação, isso não aconteceria. Por que estou sugerindo renomear ou alterar sua assinatura para algoadd
A versão sugerida por kennebec falhará ao mudar para ou do horário de verão, pois é o número da hora definido.
adicionará
h
horas àsthis
independentes das peculiaridades do sistema de tempo. O método de Jason Harwig também funciona.fonte
Você pode usar o momentjs http://momentjs.com/ Library.
fonte
Também acho que o objeto original não deve ser modificado. Então, para economizar mão de obra futura, aqui está uma solução combinada, com base nas respostas de Jason Harwig e Tahir Hasan :
fonte
Há um add no Datejs biblioteca .
E aqui estão os métodos de data do JavaScript . o kennebec mencionou sabiamente getHours () e setHours ();
fonte
Verifique se ainda não está definido, caso contrário o define no protótipo Data:
fonte
Outra maneira de lidar com isso é converter a data em unixtime (época), adicionar o equivalente em (mili) segundos e depois convertê-lo novamente. Dessa forma, você pode lidar com transições de dia e mês, como adicionar 4 horas a 21, o que deve resultar no dia seguinte, 01:00.
fonte
Para uma função simples de adicionar / subtrair horas / minutos em javascript, tente o seguinte:
Isso pode ser usado sem parâmetros para obter a hora atual
ou com parâmetros para obter o tempo com os minutos / horas adicionados
mesmo o tempo negativo funciona
Esta função retorna uma matriz de
fonte
SPRBRN está correto. Para contabilizar o início / fim do mês e ano, você precisa converter para a época e voltar.
Aqui está como você faz isso:
ou faça-o em uma linha (onde os nomes das variáveis são os mesmos que acima:
fonte
Essa é uma maneira fácil de obter um valor de dados incrementado ou decrementado.
fonte
Um pouco bagunçado, mas funciona!
Dado um formato de data como este: 2019-04-03T15: 58
Sua saída seria: 2019-04-03T16: 58
fonte