3

由于我是 android 开发的新手,我无法找到用于计算两种日期时间格式之间差异的代码。我的问题是。

我在我的项目中使用网络服务,我得到如下日期时间响应..

 starttime  :- [2012-11-04 10:00:00]
 endtime    :- [2012-11-04 12:00:00]

在这里我想在屏幕上显示为

   Today Timings  :-  2012-11-04   2 hours

意味着需要计算两个日期之间的差异,并且需要在屏幕上显示时间差异。

谁能帮我解决这个问题。

4

4 回答 4

1

鉴于您知道获取日期时间对象的确切格式,您可以使用 Android 中的SimpleDateFormat 类,它允许您将字符串解析为给定字符串中表示的日期格式的日期。对于您的问题:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = sdf.parse(<startTime/endTime String>, 0);

同样解析您的结束时间,然后可以使用各个对象的 getTime() 获得差异。

long diff = endTime.getTime() - startTime.getTime()

然后就像使用以下方法将差异转换为小时一样简单:

int hours = (int)(diff/(60*60*1000));

希望有帮助。

于 2012-11-04T05:55:00.340 回答
1

java.time

使用java.time现代 API 的解决方案:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH);
        LocalDateTime startTime = LocalDateTime.parse("2012-11-04 10:00:00", dtf);
        LocalDateTime endTime = LocalDateTime.parse("2012-11-04 12:00:00", dtf);
        long hours = ChronoUnit.HOURS.between(startTime, endTime);
        System.out.println(hours);
    }
}

输出:

2

Trail: Date Time了解有关现代日期时间 API *的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project

于 2021-05-09T13:24:26.523 回答
0

如果你正在使用java.util.Date;,你将不得不使用一个中间变量。您可以将日期转换为long值并减去这些值,然后将您的 long 转换回日期。

    long diff = new Date().getTime() - new Date(milliseconds).getTime();
    Date dateDiff = new Date(diff);

但是应该警告您,它不考虑夏令时和其他任何变量。如果你那么谨慎,你可能会沉迷于这个替换日期课程。它具有您寻求的功能。

于 2012-11-04T06:00:30.420 回答
0

我使用此代码来获取两个日期的差异。

public void getTimeDifference(Date endDate,Date startDate) {
            Date diff = new Date(endDate.getTime() - startDate.getTime());
            Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            calendar.setTime(diff);
            int day=calendar.get(Calendar.DAY_OF_MONTH);
            int hours = calendar.get(Calendar.HOUR_OF_DAY);
            }
        }
于 2015-11-14T07:24:48.320 回答