java - 日期/时间转换/算术

标签 java date java.util.date date-conversion date-arithmetic

我在 Java 1.7 中有以下代码:

DateFormat df = DateFormat.getInstance();
Date startDate = df.parse("07/28/12 01:00 AM, PST");

上述日期时间(07/28/12 01:00 AM,PST)位于可配置的属性文件中。如果这个日期时间已经过去了,那么我需要获取当前日期,设置上面字符串中的时间部分,即当前日期中的 01:00 AM PST & 如果这个时间也已经过去了,然后获取第二天 &在其中设置上面字符串的时间部分。最终的对象应该是 Date,因为我需要在 Timer 对象中使用它。

我怎样才能有效地做到这一点?我应该从日期转换为日历还是反之亦然?谁能提供一下片段吗?

最佳答案

您应该查看 Calendar类(class)。您可以使用如下结构:

    Calendar cal = Calendar.getInstance();
    cal.setTime(startDate);
    cal.add(Calendar.DAY_OF_YEAR, 1);

它还具有检查您的 startDate 是否为 before()after() 新日期的方法(使用当前时间) .

在编写内置的Java日期/时间结构时,如果我没有插入Joda Time,那就是我的失职了。 ,许多人认为它优于 native Java 实现。

编辑:

展示 Date.compareTo() 过程的示例会更有效,如 Calendar.before()Calendar.after( ) 需要与其他 Calendar 对象进行比较,创建这些对象的成本可能很高。

看看以下内容:

    DateFormat df = DateFormat.getInstance();
    Date startDate = df.parse("07/28/12 01:00 AM, PST");
    Calendar cal = Calendar.getInstance();
    cal.setTime(startDate);
    Date now = new Date();
    if (startDate.compareTo(now)< 0) {
        System.out.println("start date: " + startDate + " is before " + now);

        Calendar nowCal = Calendar.getInstance();
        nowCal.add(Calendar.DAY_OF_YEAR,1);
        cal.set(Calendar.DAY_OF_YEAR, nowCal.get(Calendar.DAY_OF_YEAR));

    } else  if (startDate.compareTo(now) == 0) {
        System.out.println("startDate: " +startDate + " is equal to " + now);
    } else {
        System.out.println("startDate: " + cal + " is after " + now);

    }
    System.out.println(cal.getTime());

关于java - 日期/时间转换/算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731833/

相关文章:

java - 无法评估条件 [org.testcontainers.junit.jupiter.TestcontainersExtension]

linux - 如何获得下一个工作日的编号

java - 如何设置java.util.Date的时区?

java - 问题: Java. util.date在 hibernate 中不允许重复的日期值

java - Android:使用一个套接字连接跨所有 Activity

java - Ant : moving a file into a target directory

excel - VBA减去日期和时间

java - 如何使用 Java Calendar 检查今天是否星期日

java - 访问日期而不创建引用变量

java - MongoDb和java dao实现