在java中将整数转换为预期的日期值

在java中将整数转换为预期的日期值,java,Java,在下面的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日 注:结束日(1)的值始终从每年的1月1日开始 import java.util.D

在下面的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日

注:结束日(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);
    }
}
有谁能给我建议一下如何编写上述逻辑的想法吗?

java.time和
Year.atDay()
让我们试一下:

    startEndDate(35);
    startEndDate(49);
    startEndDate(70);
输出为:

文件说明:

将今年与一年中的某一天合并,以创建
LocalDate

请填写您希望填写的2020年

我建议您不要使用
Date
。那门课设计得很糟糕,而且早已过时。取而代之的是,我正在使用和,都来自java.time,现代的java日期和时间API

有评论建议将您的问题视为在上一年的12月31日之前增加天数的问题。国际海事组织将其视为从一年中的天数中找出一个日期,给出了一个更优雅的解决方案

链接

  • 解释如何使用java.time
  • ,一个很好的选择

首先不要使用过时的日期类。使用java.time.LocalDate。阅读它的javadoc。这很简单。查看一下Calendar类或LocalDate类的JavaDocs。
LocalDate.of(2019,12,31).plusDays(endDay).format(DateTimeFormatter.of模式(“MMMM d uuuu”)
@Andreas为什么不将其作为答案而不是评论发布?@Abra,因为答案在顶部链接的相关问题中。这个问题是关于向当前日期添加天数,但这与向特定日期添加天数没有什么不同,这是这个问题想要的,所以这个问题仍然是重复的。我只是添加了注释,以演示如何使用固定日期进行操作,并获得正确的格式。
    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