我想得到一天的数量..即 1月1日是第1天 1月2日是第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(aug)+20(9月))=第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);
numberofDaysPassed给了我160,不受欢迎的结果
答案 0 :(得分:34)
Calendar calendar = Calendar.getInstance();
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
或使用Joda-API
DateTime dt = new DateTime();
int dayOfYear = dt.getDayOfYear();
如果您需要'th'
部分,请使用switch statement
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;
}
答案 1 :(得分:5)
LocalDate
使用Java 8及更高版本中内置的java.time包中的LocalDate
类。
获取日期:
int dayOfYear = LocalDate.now().getDayOfYear();
...并设置日期:
LocalDate localDate = LocalDate.now().withDayOfYear( 195 );
答案 2 :(得分:4)
尝试将日历上的日期设置为问题中的日期,您要求在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);
顺便说一下,您不需要在日历上设置月,日等,它默认为'现在' ...
答案 3 :(得分:3)
使用Java 8,您可以这样做:
int n = LocalDate.now().get(ChronoField.DAY_OF_YEAR);
答案 4 :(得分:2)
Calendar ca1 = Calendar.getInstance();
int DAY_OF_YEAR=ca1.get(Calendar.DAY_OF_YEAR);
System.out.println("Day of Year :"+DAY_OF_YEAR);
检查logcat中的结果..
答案 5 :(得分:1)
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);