I have DateTime string 2020-04-03 01:29:27 and 2020-04-03 01:29:37 I want to get duration in hours. I have tried many things but this but cant find any help
            Asked
            
        
        
            Active
            
        
            Viewed 404 times
        
    2 Answers
5
            
            
        I have tried many things but this but cant find any help
Do these "many things" include consulting the javadoc where you would find that:
// assuming both dates are in d1 and d2
Duration duration = Duration.between(d1, d2);
long hours = duration.toHours(); 
Hope that helps.
 
    
    
        hd1
        
- 33,938
- 5
- 80
- 91
0
            
            
        java.time
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dt1 = LocalDateTime.parse("2020-04-03 01:29:27", formatter);
        LocalDateTime dt2 = LocalDateTime.parse("2020-04-03 01:29:37", formatter);
        System.out.printf("%.4f Hour(s)", Duration.between(dt1, dt2).toSeconds() / 3600.0);
    }
}
Output:
0.0028 Hour(s)
Learn more about java.time API from Trail: Date Time.
- For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7.
- If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.
 
    
    
        Arvind Kumar Avinash
        
- 71,965
- 6
- 74
- 110
- 
                    2And others whinge about it, eh? – hd1 Apr 03 '20 at 16:45
- 
                    @hd1 - I didn't understand your comment. I tried to understand your comment by going through your answer but I couldn't make anything out of your comment. If your comment is about why I have used `.toSeconds() / 3600.0`, the answer is: purposefully. Had I used `Duration.between(dt1, dt2).toHours()`, it would have returned `0`. – Arvind Kumar Avinash Dec 05 '22 at 20:57
 
    