Alguém conhece uma maneira fácil de marcar uma data (por exemplo, Hoje) e voltar X dias?
Então, por exemplo, se eu quiser calcular a data 5 dias antes de hoje.
javascript
date
datetime
jonhobbs
fonte
fonte
Respostas:
Tente algo como isto:
Observe que isso modifica o objeto de data e retorna o valor da hora da data atualizada.
fonte
new Date(new Date().setDate(new Date().getDate()-5))
- isso acontecerá 5 dias atrás. No exemplo da resposta, passe-o para uma nova data para obter um objeto de data. Entãonew Date(d)
é o que você quer.setDate(-1)
definirá a data para o último dia do mêstoString
métodos comotoISOString
,toDateString
, etc.Se você estiver realizando muita manipulação de data de dor de cabeça em todo o aplicativo da Web, o DateJS facilitará sua vida:
http://simonwillison.net/2007/Dec/3/datejs/
fonte
getTime()
esetTime()
são milissegundos desde a época. Não importa se o tempo ultrapassa o limite de um ano.É algo como isto:
fonte
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
então apenasvar daysAgo45 = getDaysAgo(45);
Percebi que o getDays + X não funciona nos limites do dia / mês. O uso do getTime funciona desde que sua data não seja antes de 1970.
fonte
obtenha moment.js. Todas as crianças legais usam. Possui mais opções de formatação, etc.
Opcional! Converter em JS Date obj para ligação angular.
Opcional! Formato
fonte
Eu criei esse protótipo para Date para poder passar valores negativos para subtrair dias e valores positivos para adicionar dias.
Então, para usá-lo, basta escrever:
fonte
d.setDate(d.getDate() + days)
com valores positivos e negativos por dias para adicionar e subtrair dias, respectivamente. E deve funcionar na instância (como outros métodos Date), não criar e retornar uma cópia.Algumas das soluções existentes estavam próximas, mas não exatamente o que eu queria. Esta função trabalha com valores positivos ou negativos e lida com casos de limite.
fonte
Eu gosto de fazer as contas em milissegundos. Então use
Date.now()
e se você gosta formatado
NOTA:
Date.now()
não funciona em navegadores mais antigos (por exemplo, IE8, eu acho). Polyfill aqui .ATUALIZAÇÃO junho 2015
@socketpair apontou minha negligência. Como ele / ela diz: "Algum dia no ano tem 23 horas e 25 devido a regras de fuso horário".
Para expandir isso, a resposta acima terá imprecisões no horário de verão, no caso em que você deseja calcular o dia LOCAL 5 dias atrás em um fuso horário com alterações no horário de verão e você
Date.now()
lhe dê o LOCAL atual agora, ou.toString()
que retorna a data local e, portanto, é incompatível com aDate.now()
data base no UTC.No entanto, funciona se você estiver fazendo todas as contas no UTC, por exemplo
A. Você deseja a data UTC de 5 dias atrás a partir de NOW (UTC)
B. Você começa com uma data base UTC diferente de "agora", usando
Date.UTC()
fonte
Acho que um problema com o método getDate () / setDate () é que ele transforma tudo com facilidade em milissegundos e a sintaxe às vezes é difícil de seguir.
Em vez disso, gosto de resolver o fato de que 1 dia = 86.400.000 milissegundos.
Então, para sua pergunta em particular:
Funciona como um encanto.
Eu uso esse método o tempo todo para fazer cálculos contínuos de 30/60/365 dias.
Você pode extrapolar isso facilmente para criar unidades de tempo por meses, anos etc.
fonte
divida sua data em partes e retorne uma nova data com os valores ajustados
Lembre-se de que os meses são baseados em zero, mas os dias não são. ou seja, nova data (2009, 1, 1) == 01 de fevereiro de 2009, nova data (2009, 1, 0) == 31 de janeiro de 2009;
fonte
Sem usar a segunda variável, você pode substituir 7 por suas costas x dias:
fonte
fonte
Eu criei uma função para manipulação de datas. você pode adicionar ou subtrair qualquer número de dias, horas, minutos.
Agora, chame essa função passando parâmetros. Por exemplo, aqui está uma chamada de função para obter a data antes de três dias a partir de hoje.
fonte
fonte
As principais respostas levaram a um erro no meu código, no qual, no primeiro dia do mês, ele definiria uma data futura no mês atual. Aqui está o que eu fiz,
fonte
Uma maneira fácil de gerenciar datas é usar o Moment.js
Você pode usar
add
. ExemploDocumentos http://momentjs.com/docs/#/manipulating/add/
fonte
Eu gosto do seguinte, porque é uma linha. Não é perfeito com alterações no horário de verão, mas geralmente é bom o suficiente para minhas necessidades.
fonte
para mim todas as combinações funcionaram bem com o snipplet de código abaixo, o snippet é para a implementação do Angular-2, se você precisar adicionar dias, passar o número positivo de dias, se precisar subtrair o número negativo de dias
fonte
Recebo uma boa milhagem fora de date.js:
http://www.datejs.com/
Agradável!
O site inclui esta beleza:
fonte
Se você deseja subtrair vários dias e formatar sua data em um formato legível por humanos, considere criar um
DateHelper
objeto personalizado parecido com este:(veja também este violino )
fonte
Veja o código a seguir, subtraia os dias da data atual. Além disso, defina o mês de acordo com a data subtraída.
fonte
Ao definir a data, a data é convertida em milissegundos, portanto, você precisa convertê-la novamente em uma data:
Este método também leva em consideração mudanças de ano novo etc.
fonte
Você pode usar Javascript.
Para PHP,
Espero que ajude você.
fonte
Eu converti em milissegundos e deduzi dias mais mês e ano não vai mudar e lógico
A esperança ajuda
fonte
fonte
Usando sintaxe da função JavaScript moderna
fonte
Tente algo assim
currDate pode ser qualquer data
limite pode ser a diferença no número de dias (positivo para o futuro e negativo para o passado)
fonte
Isso fornecerá a você os últimos 10 dias, resultando em 110% de trabalho, você não receberá nenhum tipo de problema
você pode alterar os dias de subtração de acordo com seus requisitos
fonte
fonte
fonte