【发布时间】:2011-03-04 21:33:01
【问题描述】:
我有两个日期,例如 19/03/1950 和 18/04/2011。我如何计算它们之间的差异以获得人的年龄?我是否必须继续乘以得到小时或秒等?
【问题讨论】:
-
以 Kodejava.org 为例的问题是,如果您将公历倒退几天并越过一个 DST 边界(特别是如果您越过“Spring Forward”),那么您就是天向后计算出现了一天短。
标签: java
我有两个日期,例如 19/03/1950 和 18/04/2011。我如何计算它们之间的差异以获得人的年龄?我是否必须继续乘以得到小时或秒等?
【问题讨论】:
标签: java
String date1 = "26/02/2011";
String date2 = "27/02/2011";
String format = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date dateObj1 = sdf.parse(date1);
Date dateObj2 = sdf.parse(date2);
long diff = dateObj2.getTime() - dateObj1.getTime();
int diffDays = (int) (diff / (24* 1000 * 60 * 60));
【讨论】:
您使用 Date 和 Duration 类:
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Date.html
http://download.oracle.com/javase/1.5.0/docs/api/javax/xml/datatype/Duration.html
您创建日期对象,然后使用 Duration 的方法 addTo() 和减法()
【讨论】:
以下代码将为您提供两个日期之间的差异:
import java.util.Date;
import java.util.GregorianCalendar;
public class DateDiff {
public static void main(String[] av) {
/** The date at the end of the last century */
Date d1 = new GregorianCalendar(2000, 11, 31, 23, 59).getTime();
/** Today's date */
Date today = new Date();
// Get msec from each, and subtract.
long diff = today.getTime() - d1.getTime();
System.out.println("The 21st century (up to " + today + ") is "
+ (diff / (1000 * 60 * 60 * 24)) + " days old.");
}
}
【讨论】:
为什么不使用jodatime?在java中计算日期和时间要容易得多。
可以获取年份,使用方法yearsBetween()
【讨论】: