日期和现在之间的 Java 时间

发布于 2024-12-03 05:06:19 字数 100 浏览 1 评论 0原文

我需要帮助用 Java 编写一个函数,该函数接受输入日期并告诉我自该日期以来的年数、月数和天数。

例如,“2005 年 7 月 1 日”将输出“6 年 2 个月 2 天”

I need help writing a function in Java that takes an input date and tells me the number of years, months, and days since the date.

For example, "July 1, 2005" would output "6 years, 2 months, 2 days"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴梦一场 2024-12-10 05:06:19

使用 Joda Time - 它使它相对容易:(

import org.joda.time.*;

public class Test
{
    public static void main(String[] args)
    {
        LocalDate then = new LocalDate(2005, 7, 1);
        LocalDate today = new LocalDate();

        Period period = new Period(then, today, PeriodType.yearMonthDay());
        System.out.println(period); // P6Y2M2D
        System.out.println(period.getYears()); // 6
        System.out.println(period.getMonths()); // 2
        System.out.println(period.getDays()); //2
    }
}

相比,我非常更喜欢 Joda API日期/日历使用起来要容易得多,部分原因是通常更喜欢不变性。)

Use Joda Time - it makes it relatively easy:

import org.joda.time.*;

public class Test
{
    public static void main(String[] args)
    {
        LocalDate then = new LocalDate(2005, 7, 1);
        LocalDate today = new LocalDate();

        Period period = new Period(then, today, PeriodType.yearMonthDay());
        System.out.println(period); // P6Y2M2D
        System.out.println(period.getYears()); // 6
        System.out.println(period.getMonths()); // 2
        System.out.println(period.getDays()); //2
    }
}

(I vastly prefer the Joda API to Date/Calendar. It's much easier to use, partly due to generally preferring immutability.)

花开半夏魅人心 2024-12-10 05:06:19

java.time

下面引用的是 主页的通知乔达时间

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

您可以使用 java.time.Period< /code>ISO-8601 标准 为蓝本,并由Java-8 作为 JSR 的一部分-310实施

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

import java.time.LocalDate;
import java.time.Period;

public class Main {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2005, 7, 1);
        LocalDate endDate = LocalDate.of(2011, 9, 3);
        Period period = startDate.until(endDate);
        System.out.println(period);

        // Custom format
        String formatted = String.format("%d years, %d months, %d days", period.getYears(), period.getMonths(),
                period.getDays());
        System.out.println(formatted);
    }
}

输出:

P6Y2M2D
6 years, 2 months, 2 days

在线演示

跟踪:日期时间


* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport 将大部分 java.time 功能向后移植到 Java 6 和 Java 6 7. 如果您正在处理 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请检查 通过脱糖提供 Java 8+ API如何在Android项目中使用ThreeTenABP

java.time

Quoted below is a notice from the home page of Joda-Time:

Note that from Java SE 8 onwards, users are asked to migrate to java.time (JSR-310) - a core part of the JDK which replaces this project.

You can use java.time.Period which is modelled on ISO-8601 standards and was introduced with Java-8 as part of JSR-310 implementation.

Solution using java.time, the modern Date-Time API:

import java.time.LocalDate;
import java.time.Period;

public class Main {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2005, 7, 1);
        LocalDate endDate = LocalDate.of(2011, 9, 3);
        Period period = startDate.until(endDate);
        System.out.println(period);

        // Custom format
        String formatted = String.format("%d years, %d months, %d days", period.getYears(), period.getMonths(),
                period.getDays());
        System.out.println(formatted);
    }
}

Output:

P6Y2M2D
6 years, 2 months, 2 days

ONLINE DEMO

Learn more about the modern Date-Time API from Trail: Date Time.


* For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文