今天是一年中的第 n 天LocalDate

2022-09-02 02:23:41

我想得到天数..即1月1日是第1天 1月2日是第2天 2月1日是第32天,12月31日是第365天或366天,具体取决于闰年与否

我使用了各种技术,如日期1 - 日期2等...但似乎没有什么对我不起作用,不能得到正确的逻辑可能是..我想要的是计数并加上已经过去的月份数加上运行月份的天数,即今天是2012年9月21日是日数(31(1月)+ 29(2月)+ 31(mar)+ 30(apr)+ 31(may)+ 30(june)+ 31(july)+ 31(8月)+ 20(9月)) = 第264天,他们每次过去一天都会继续加一个...谢谢

我的代码

int year = Calendar.getInstance().get(Calendar.YEAR);
            GregorianCalendar gc = new GregorianCalendar();
            gc.set(GregorianCalendar.DAY_OF_MONTH, 8);
            gc.set(GregorianCalendar.MONTH, GregorianCalendar.JUNE);
            gc.set(GregorianCalendar.YEAR, year);
            int numberofDaysPassed=gc.get(GregorianCalendar.DAY_OF_YEAR);

天数传递给我 160, 不需要的结果


答案 1
Calendar calendar = Calendar.getInstance();
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);  

或使用Joda-API

DateTime dt = new DateTime();  
int dayOfYear = dt.getDayOfYear();  

如果需要部件,请使用开关语句'th'

switch (dayOfYear > 20 ? (dayOfYear % 10) : dayOfYear) {
            case 1:  return dayOfYear + "st";
                     break;
            case 2:  return dayOfYear + "nd";
                     break;
            case 3:  return dayOfYear + "rd";
                     break;
            default:  return dayOfYear + "th";
                     break;   
} 

答案 2

LocalDate

在 Java 8 及更高版本中内置的 java.time 包中使用 LocalDate 类。

获取一年中的某一天:

int dayOfYear = LocalDate.now().getDayOfYear();

...并设置一年中的某一天:

LocalDate localDate = LocalDate.now().withDayOfYear( 195 );

推荐