首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAVA中两个时间间隔的差异

JAVA中两个时间间隔的差异
EN

Stack Overflow用户
提问于 2013-05-27 08:55:57
回答 1查看 1.8K关注 0票数 0

我有两次,一个开始和一个停止时间,以05:00 (HH:MM)格式。如果开始时间是times.Suppose 05:00,结束时间是15: 20 ,那么如何计算出两者之间的时间差是10小时20分钟。我应该将它们转换为datetime对象并使用毫秒来获得时间差,还是有更好的方法来做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-27 08:56:36

使用Joda时间。您希望LocalTime类型表示您的开始和停止时间,然后在它们之间创建一个Period

我不知道Android是否有一个缩减版的Joda时间(如果你的应用程序不是很小的话,它可能会有点大),但它会比使用普通的JDK库简单得多。当然,您可以这样做--将两者转换为毫秒,找到差值,然后执行算术。只会比较痛苦:

样本代码:

代码语言:javascript
运行
复制
import org.joda.time.*;

public class Test {    
    public static void main(String args[]) {
        LocalTime start = new LocalTime(5, 0);
        LocalTime end = new LocalTime(15, 20);
        Period period = new Period(start, end, PeriodType.time());
        System.out.println(period.getHours()); // 10
        System.out.println(period.getMinutes()); // 20        
    }
}

只需使用JDK类:

代码语言:javascript
运行
复制
import java.util.*;
import java.util.concurrent.*;
import java.text.*;

public class Test {    
    public static void main(String args[]) throws ParseException {
        DateFormat format = new SimpleDateFormat("HH:mm", Locale.US);
        format.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date start = format.parse("05:00");
        Date end = format.parse("15:20");

        long difference = end.getTime() - start.getTime();

        long hours = TimeUnit.MILLISECONDS.toHours(difference);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(difference) % 60;

        System.out.println("Hours: " + hours);
        System.out.println("Minutes: " + minutes);
    }
}

请注意,这假设end是在start之后--您需要为负数时间计算所需的结果。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16769596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档