2013-04-04 10 views
33

So che questo non è "il modo in cui dovrebbe funzionare", ma ancora: se hai due oggetti DateTime, qual è un buon modo per sottrarli? Convertili in oggetti Date?Come sottrarre due dataset di joda?

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"); 
+1

[Questo] (http://stackoverflow.com/questions/3802893/ numero-di-giorni-tra-due-date-in-jodatime #) dovrebbe aiutarti. – karmanaut

+0

@karmanaut - grazie, chiudendo in dup. – ripper234

+2

@karmanaut Quella domanda in realtà non copre lo stesso terreno. Conta il numero di * giorni * tra due istanti, non un modo generale per passare da una data di inizio e fine a un punto. – millimoose

risposta

0

Penso che si possa creare un Period utilizzando this costruttore che prende due oggetti DateTime.

2

Dipende dalla precisione che si desidera ottenere. Dovresti controllare il pacchetto org.joda.time e controllare le classi di supporto come Hours, Days, ecc.

3

Questo aiuto? http://joda-time.sourceforge.net/key_period.html Essa mostra l'esempio di seguito

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); 
16

dal vostro esempio sembra che tu voglia la differenza di secondi in modo this should help:

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