11

我想从当前时间获取前一天(24 小时)。

例如,如果当前时间是Date currentTime = new Date();

格林威治标准时间 2011-04-25 12:15:31:562

如何确定时间即

格林威治标准时间 2011-04-24 12:15:31:562

4

5 回答 5

32

您可以使用Calendar 类做到这一点:

Calendar cal = Calendar.getInstance();
cal.setTime ( date ); // convert your date to Calendar object
int daysToDecrement = -1;
cal.add(Calendar.DATE, daysToDecrement);
date = cal.getTime(); // again get back your date object
于 2011-04-27T05:35:00.290 回答
10

我建议你从Joda Time开始,这是一个更好的API。然后你可以使用:

DateTime yesterday = new DateTime().minusDays(1);

请注意,“昨天的这个时间”并不总是 24 小时前……您需要考虑时区等。您可能想要使用LocalDateTimeorInstant代替DateTime.

于 2011-04-27T05:34:23.903 回答
2

请在此处查看: Java 日期与日历

Calendar cal=Calendar.getInstance();
cal.setTime(date); //not sure if date.getTime() is needed here
cal.add(Calendar.DAY_OF_MONTH, -1);
Date newDate = cal.getTime();
于 2011-04-27T05:40:10.077 回答
1

24 小时和 1 天不是一回事。但是你都使用日历:

Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, -1);
Date d = c.getTime();

如果您要返回 24 小时,您将使用Calendar.HOUR_OF_DAY

于 2011-04-27T05:39:26.867 回答
0

java.time

java.util日期时间 API 及其格式化 API已SimpleDateFormat过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *

另外,下面引用的是来自Joda-Time主页的通知:

请注意,从 Java SE 8 开始,用户被要求迁移到 java.time (JSR-310) - JDK 的核心部分,它取代了这个项目。

使用java.time现代日期时间 API 的解决方案:

import java.time.Instant;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println("Now:       " + now);

        Instant yesterday = now.minus(1, ChronoUnit.DAYS);
        System.out.println("Yesterday: " + yesterday);
    }
}

样本运行的输出:

Now:       2021-07-16T20:40:24.402592Z
Yesterday: 2021-07-15T20:40:24.402592Z

ONLINE DEMO

出于任何原因,如果您需要将此对象转换Instant为 的对象java.util.Date,您可以执行以下操作:

Date date = Date.from(odt.toInstant());

从Trail: Date Time了解有关现代日期时间 API 的更多信息。


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

于 2021-07-16T20:43:05.160 回答