由于我是Android开发的新手,我无法找到用于计算两种日期时间格式之间差异的代码。我的问题是。
我在我的项目中使用webservice,我的日期时间响应如下所示..
starttime :- [2012-11-04 10:00:00]
endtime :- [2012-11-04 12:00:00]
我希望在屏幕上显示为
Today Timings :- 2012-11-04 2 hours
意味着需要计算两个日期之间的差异,并需要在屏幕上显示时差。
任何人都可以帮助我。
答案 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)
使用现代 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 desugaring 和 How 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);
}
}