gpt4 book ai didi

java - 如何获得从现在到 future 时间的月数、周数、天数和小时数?

转载 作者:行者123 更新时间:2023-11-29 03:28:01 25 4
gpt4 key购买 nike

我需要使用 Java 找出从现在到 future 还剩多少月、周、天和小时。我不能使用像 Joda 这样的任何第三方库。我怎样才能只使用 JDK 类来做到这一点?

到目前为止,这就是我想出的。它有点工作,除了某些情况:

public class DateUtil {

public static Integer[] components(Date from, Date to) {
Integer[] result = new Integer[4];
//SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//df.setTimeZone(TimeZone.getTimeZone("EST"));

Calendar fromCal = new GregorianCalendar();
Calendar toCal = new GregorianCalendar();

fromCal.setTime(from);
toCal.setTime(to);

int months = 0;
do {
fromCal.add(Calendar.MONTH, 1);
++months;
//System.out.println(df.format(fromCal.getTime()));
} while (fromCal.before(toCal));

fromCal.add(Calendar.MONTH, -1);
--months;

int days = 0;
do {
fromCal.add(Calendar.DAY_OF_YEAR, 1);
++days;
} while (fromCal.before(toCal));

fromCal.add(Calendar.DAY_OF_YEAR, -1);
--days;

int hours = 0;
do {
fromCal.add(Calendar.HOUR_OF_DAY, 1);
++hours;
} while (fromCal.before(toCal));

fromCal.add(Calendar.HOUR_OF_DAY, -1);
--hours;

int minutes = 0;
do {
fromCal.add(Calendar.MINUTE, 1);
++minutes;
} while (fromCal.before(toCal));

result[0] = months;
result[1] = days;
result[2] = hours;
result[3] = minutes;

return result;
}

public static void main(String[] args) {
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
df.setTimeZone(TimeZone.getTimeZone("EST"));

Date from = df.parse("2014-03-29 00:00");
Date to = df.parse("2014-05-29 00:00");
Integer result[] = components(from, to);

System.out.printf("Months:%02d Days:%02d Hrs:%02d Mins:%02d\n",
result[0], result[1], result[2], result[3]);
} catch (Exception e) {
e.printStackTrace();
}
}
}

当二月在中间并且开始日期是月末时,它会产生 Not Acceptable 结果。例如:

自:2013 年 12 月 31 日至:2014 年 12 月 31 日

差异将产生:12 个月零 3 天。

最佳答案

为什么不使用 Java 类 DateCalendar

这些类已经内置了功能来帮助您计算两个日期之间的差异。大多数 Date 方法似乎已被弃用,因此我建议使用 Calendar。祝你好运!

关于java - 如何获得从现在到 future 时间的月数、周数、天数和小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com