今天是一年中的第n天

17 java android

我想获得一天的数量..即1月1日是第1天1月2日是2月1日是第32天而12月31日是第365天或366,取决于闰年或不

我已经使用了所有类型的技术,如date1 - date2等......但似乎没有任何东西对我来说不能正确的逻辑可能是...我想要的是计算并添加已经过去的月数加上运行月份的天数即今天是2012年9月21日是天数(31(jan)+29(feb)+31(mar)+30(apr)+31(可能)+30(6月)+31(7月) +31(8月)+20(9月))=第264天他们每天都会继续添加加1 ...谢谢

mycode的

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);
Run Code Online (Sandbox Code Playgroud)

numberofDaysPassed给了我160,不受欢迎的结果

Ily*_*lya 36

Calendar calendar = Calendar.getInstance();
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);  
Run Code Online (Sandbox Code Playgroud)

或者使用Joda-API

DateTime dt = new DateTime();  
int dayOfYear = dt.getDayOfYear();  
Run Code Online (Sandbox Code Playgroud)

如果需要'th'部分,请使用switch语句

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;   
} 
Run Code Online (Sandbox Code Playgroud)

  • 关于你的`switch`语句:如果`dayOfYear`是例如11或21,会发生什么?(你想要:11日,21日). (4认同)
  • @Ilya我的评论是表明这是错的.如果`dayOfYear`是21,那么你想要21日,而不是21日.或172应该给172,而不是172. (3认同)
  • @Jesper你可以使用`switch(dayOfYear> 20?(dayOfYear%10):dayOfYear)` (2认同)

小智 6

LocalDate

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

获取一年中的某天:

int dayOfYear = LocalDate.now().getDayOfYear();
Run Code Online (Sandbox Code Playgroud)

…并设定年度日期:

LocalDate localDate = LocalDate.now().withDayOfYear( 195 );
Run Code Online (Sandbox Code Playgroud)