【问题标题】:Converting an integer to expected Date value in java [duplicate]在java中将整数转换为预期的日期值[重复]
【发布时间】:2019-12-13 07:21:01
【问题描述】:

在下面的 Java 类中,我需要编写将 int 转换为 Date 的逻辑,如下所述。而且这个程序与在当前日期添加天数无关。

如果 endDay 值为 1,则日期应打印为 2020 年 1 月 1 日。
如果 endDay 值为 28,则日期应打印为 2020 年 1 月 28 日。
如果 endDay 值为 35,则日期应打印为 2020 年 2 月 4 日。
如果 endDay 值为 60,则日期应打印为 2020 年 2 月 29 日。
如果 endDay 值为 70,则日期应打印为 2020 年 3 月 10 日。

注意:endDay (1) 的值总是从每年的 1 月 1 日开始。

import java.util.Date;

public class TestDate
{
    public void startEndDate(int endDay)
    {
         Date date=new Date();             
         //logic to print the date here
         System.out.println("For the given end day of "+endDay+" the date returned is : "+date);
    }

    public static void main(String[] args)
    {
       startEndDate(35);
       startEndDate(49);
       startEndDate(70);
    }
}

任何人都可以建议我如何编写上述逻辑的想法吗?

【问题讨论】:

  • 首先不要使用过时的 Date 类。使用 java.time.LocalDate。阅读它的 javadoc。这很简单。 docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
  • LocalDate.of(2019, 12, 31).plusDays(endDay).format(DateTimeFormatter.ofPattern("MMMM d uuuu"))
  • @Andreas 为什么不将其发布为答案而不是评论?
  • @Abra 因为答案在顶部链接的相关问题中。该问题是关于将天数添加到当前日期,但这与将天数添加到特定日期没有什么不同,这是这个问题想要的,所以这个问题仍然是重复的。我刚刚添加了评论以显示如何使用固定日期进行操作并获得正确格式的示例。

标签: java


【解决方案1】:

java.time 和Year.atDay()

public static void startEndDate(int endDay)
{
    LocalDate date = Year.of(2020).atDay(endDay);
    System.out.println("For the given end day of " + endDay
                        + " the date returned is : " + date);
}

让我们试试吧:

    startEndDate(35);
    startEndDate(49);
    startEndDate(70);

输出是:

For the given end day of 35 the date returned is : 2020-02-04
For the given end day of 49 the date returned is : 2020-02-18
For the given end day of 70 the date returned is : 2020-03-10

Year.atDay() 的文档说明:

将今年与一年中的某一天结合起来创建一个LocalDate

请填写你想要的年份,我把 2020 放在哪里。

我建议你不要使用Date。该课程设计不良且早已过时。相反,我使用的是YearLocalDate,它们都来自现代​​ Java 日期和时间 API java.time。

关于您的问题的建议是在上一年的 12 月 31 日加上天数的问题。 IMO 将其视为从一年中的日期中查找日期,这提供了一个更优雅的解决方案。

链接

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 2012-05-15
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2020-04-24
    相关资源
    最近更新 更多