java - 如何在android中添加两个毫秒

标签 java android eclipse mobile

我想计算正确计算的两次之间的差异然后我必须将它减半所以我将它除以 2 结果是好的。但是当我尝试将 timdedifferencemillis 添加到 startTime 时,它​​没有给我正确的结果......

开始时间= 05:53
结束时间= 17:57
我要结果 11:55
但我的代码给了我 06:55
请帮忙......

protected String transitTime2(String endtime, String starttime) {
    SimpleDateFormat dt = new SimpleDateFormat("hh:mm");
    Date startTime = null;
    Date endTime;
    long timdedifferencemillis = 0;
    try {
        startTime = dt.parse(starttime);
        endTime = dt.parse(endtime);
        long diff=startTime.getTime();
        timdedifferencemillis = (endTime.getTime() - startTime.getTime())/2;
        //timdedifferencemillis

    } catch (ParseException e) {
        e.printStackTrace();
    }
    long timdedifferencemillis1=startTime.getTime()+timdedifferencemillis;

    int minutes = Math
            .abs((int) ((timdedifferencemillis1 / (1000 * 60)) % 60));
    int hours = Math
            .abs((int) ((timdedifferencemillis1 / (1000 * 60 * 60)) % 24));
    String hmp = String.format("%02d %02d ", hours, minutes);
    return hmp;
}

最佳答案

问题可能是时区;当您最初解析 endtimestarttime 时,默认情况下(在没有格式字符串中指示和输入中表示的明确时区的情况下),Java 假定时间提供的是相对于系统的本地时区。然后,当您调用 getTime() , 它返回

the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object

一个解决方案是告诉您的 SimpleDateFormat 对象假定它解析的所有字符串都使用 GMT,而不是本地时区。尝试在初始化 dt 之后但在调用 dt.parse(...) 之前添加此行:

dt.setTimeZone(TimeZone.getTimeZone("GMT"));

关于java - 如何在android中添加两个毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043916/

相关文章:

Java 泛型 - 转换泛型类时出错

java - 如果重复的类属于不同的包,为什么编译器会在它们上失败?

android - 如何获取软键盘 KEYCODE_DEL 的事件?

c++ - 在eclipse中使用环境变量

eclipse - 在 Eclipse 中将项目重新连接到 SVN

java - 如何从命令提示符运行 Maven 项目 testng.xml

java - HashSet.equals() 是否在恒定时间内运行?

Android 位置更新作为后台服务

android - 我应该将图像放在哪个可绘制文件夹中?

android - 绘制-xxxx : Eclipse Versus AVD