android中两种日期时间格式的区别?

时间:2012-11-04 05:16:14

标签: android datetime-format android-datepicker

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

我在我的项目中使用webservice,我的日期时间响应如下所示..

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

我希望在屏幕上显示为

   Today Timings  :-  2012-11-04   2 hours

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

任何人都可以帮助我。

4 个答案:

答案 0 :(得分:1)

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

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

希望有所帮助。

答案 1 :(得分:1)

java.time

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

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

modern date-time API 中了解有关 Trail: Date Time* 的更多信息。


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

答案 2 :(得分:0)

如果您使用java.util.Date;,则必须使用中间变量。您可以将日期转换为long值并减去这些值,然后将您的日期转换回日期。

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

但是应该警告你不要将夏令时和其他任何变量考虑在内。如果你是那么谨慎,你可能会沉迷于此replacement date class.它具有你所寻求的功能。

答案 3 :(得分: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);
            }
        }