web-dev-qa-db-fra.com

Comment soustraire deux heures Joda?

Je sais que ce n'est pas "la façon dont il est censé fonctionner", mais quand même: si vous avez deux objets DateTime, quelle est la bonne façon de les soustraire? Les convertir en objets Date?

DateTime start = new DateTime();
System.out.println(start + " - doing some stuff");

// do stuff

DateTime end = new DateTime();
Period diff = // end - start ???
System.out.println(end + " - doing some stuff took diff seconds");
38
ripper234

La période a n constructeur qui prend deux instances de ReadableInstant :

Period diff = new Period(start, end);

(ReadableInstant est une interface implémentée par DateTime, ainsi que d'autres classes.)

54
millimoose

D'après votre exemple, vous semblez vouloir la différence en secondes donc cela devrait aider :

Seconds diff = Seconds.secondsBetween(start, end);
20
bowmore

Est-ce que cela aide? http://joda-time.sourceforge.net/key_period.html Il montre l'exemple ci-dessous

DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);

// period of 1 year and 7 days
Period period = new Period(start, end);

// calc will equal end
DateTime calc = start.plus(period);

// able to calculate whole days between two dates easily
Days days = Days.daysBetween(start, end);
6
Rush

Cela dépend de la précision que vous souhaitez obtenir. Vous devriez vérifier le org.joda.time package et recherchez les classes d'assistance telles que Hours, Days, etc.

3
Caesar Ralf

Je pense que vous pouvez créer un Period en utilisant le constructeur this qui prend deux DateTime objets.

1
tehlexx