今天是一年的第n天

我想得到的date..即1月1日是第1天1月2日是第2天2月1日是第32日和12月31日是第365或366日,根据闰年或不

我已经使用了各种各样的技术,如date1 – date2等…但似乎没有为我工作不能得到正确的逻辑可能是..我想要的是计数和添加已经过去的月份数加上(31日)+29(feb)+31(mar)+30(apr)+31(may)+30(6月)+31(7月) +31(aug)+20(sept))=第264天,他们会继续加一加一天,每一天过去…谢谢

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); 

天使的号码给我160,不希望的结果

Solutions Collecting From Web of "今天是一年的第n天"

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

或者使用Joda-API

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

如果你需要'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; } 

尝试设置日历date到问题的date,你要求9月21日,但你把6月8日的代码。

这里是更新的代码,而不是265:

  int year = Calendar.getInstance().get(Calendar.YEAR); GregorianCalendar gc = new GregorianCalendar(); gc.set(Calendar.DAY_OF_MONTH, 21); // you asked for 21st Sept but put 8 gc.set(Calendar.MONTH, Calendar.SEPTEMBER); // you aksed for 21st Sept but put JUNE gc.set(Calendar.YEAR, year); int numberofDaysPassed = gc.get(Calendar.DAY_OF_YEAR); System.out.println(numberofDaysPassed); 

顺便说一句,你不需要在日历上设置月份,date等,它默认为'现在'…

使用Java 8,你可以这样做: int n = LocalDate.now().get(ChronoField.DAY_OF_YEAR);

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

得到一年的一天:

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

…并设置每年的一天:

 LocalDate localDate = LocalDate.now().withDayOfYear( 195 ); 
 Calendar ca1 = Calendar.getInstance(); int DAY_OF_YEAR=ca1.get(Calendar.DAY_OF_YEAR); System.out.println("Day of Year :"+DAY_OF_YEAR); 

检查你的logcat的结果..

 DateTime dt = new DateTime(); String dayOfYear = dt.getDayOfYear().toString(); String day = ""; if(dayOfYear.endsWith("1") && !dayOfYear.endsWith("11")) day = dayOfYear+"st"; else if(dayOfYear.endsWith("2") && !dayOfYear.endsWith("12")) day = dayOfYear+"nd"; else if(dayOfYear.endsWith("3") && !dayOfYear.endsWith("13")) day = dayOfYear+"rd"; else day = dayOfYear+"th"; System.out.println("Day of year :- "+ day);