其实Java API就带这个方法:
calendar.get(GregorianCalendar.DAY_OF_YEAR);
这个是我写的:
import static java.lang.System.out;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
public class DayCounter {
private static final long DAY_IN_MILL_SECOND = 24 * 60 * 60 * 1000L;
private Date zeroOClock(Date date) {
if (date == null)
throw new IllegalStateException("date can't be null");
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(GregorianCalendar.HOUR_OF_DAY, 0);
calendar.set(GregorianCalendar.MINUTE, 0);
calendar.set(GregorianCalendar.SECOND, 0);
calendar.set(GregorianCalendar.MILLISECOND, 0);
return calendar.getTime();
}
private int daysBetween(Date end, Date start) {
long millSecondsBetween = Math.abs(zeroOClock(end).getTime()
- zeroOClock(start).getTime());
return (int) (millSecondsBetween / DAY_IN_MILL_SECOND);
}
public int dayOfYear(Date date) {
GregorianCalendar start = new GregorianCalendar();
start.setTime(date);
start.set(GregorianCalendar.MONTH, 0);
start.set(GregorianCalendar.DAY_OF_MONTH, 1);
return daysBetween(date, start.getTime()) + 1;
}
public int dayOfYear(String date) {
try {
return dayOfYear(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(date));
} catch (ParseException e) {
throw new RuntimeException("error date format:" + date);
}
}
/**
* Test
*
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormate = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
DayCounter dayCounter = new DayCounter();
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(dateFormate.parse("2009-01-01 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-01-01 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));
calendar.setTime(dateFormate.parse("2009-01-31 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-01-31 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));
calendar.setTime(dateFormate.parse("2009-02-1 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-02-1 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));
calendar.setTime(dateFormate.parse("2009-03-1 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-03-1 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));
}
}
最后:
如果想学编程的话多动手写写吧,要不永远也不会。
温馨提示:答案为网友推荐,仅供参考