Fiquei um pouco estragado pela API Joda-Time de:
DateTime now = new DateTime();
DateTime ninetyDaysAgo = now.minusDays(90);
Estou tentando fazer algo semelhante em Ruby, mas estou
now = Time.now
ninetyDaysAgo = now - (90*24)
No entanto, a matemática está errada aqui (estou realmente trabalhando com datas à meia-noite).
Existe uma API amigável para subtração de datas?
Date
também permite frações para que você possa fazerDate.today - (90.0/24.0)
. O resultado pode ser facilmente convertidoto_datetime
outo_time
também.Para aqueles que usam Rails, verifique o seguinte:
fonte
Se você estiver usando Rails ou não se importar em incluir ActiveSupport, você pode usar o DSL Numérico # dias como este:
Como você está trabalhando com datas em vez de horas, também deve começar com instâncias de Date ou converter suas intâncias de DateTime com #to_date. Ao adicionar / subtrair números de instâncias de data, os números são implicitamente dias.
fonte
Ruby suporta aritmética de data nas classes Date e DateTime , que fazem parte da biblioteca padrão do Ruby. Ambas as classes expõem os métodos # + e # - , que somam e subtraem dias de uma data ou hora.
Use os métodos # << e # >> para operar em meses em vez de dias. A aritmética em meses é um pouco diferente da aritmética em dias. Usar Date em vez de DateTime torna o efeito mais óbvio.
Seguindo seu exemplo do tempo joda, você pode escrever algo assim em Ruby.
ou talvez apenas
fonte
Este é um post muito antigo, mas se você quiser continuar com um
Time
objeto, como foi pedido originalmente, ao invés de mudar para umDate
objeto que você pode querer considerar usarRuby Facets
.Ruby Facets é uma biblioteca padronizada de extensões para as principais classes Ruby.
http://rubyworks.github.io/facets/
Ao solicitar as Facetas, você pode fazer o seguinte com os objetos Tempo.
Time.now.less(90, :days)
fonte
use o número de segundos:
fonte
Solução simples:
fonte