有关日期的一些常用方法
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 根据年月判断该月的天数
* @param year
* @param month
* @return
*/
public static int getMonthOfDays(int year,int month)
{
int days=30;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
//对于2月份需要判断是否为闰年
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days=29;
break;
} else {
days=28;
break;
}
case 4:
case 6:
case 9:
case 11:
days=30;
break;
default:
break;
}
return days;
}
/**
* 判断每月的第一天是周几
* @param year
* @param month
* @return
*/
public static int getWeekday(int year,int month)
{
String d = year + "-" + month + "-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int dayForWeek = 0;
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(d));
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dayForWeek;
}
/**
* 根据日期判断是该年的第几周
* @param year
* @param month
* @return
*/
public static int getWeek(int year,int month,String days)
{
String d = year + "-" + month +"-"+ days;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int weeks = 1;
try {
Date date = sdf.parse(d);
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
weeks = calendar.get(Calendar.WEEK_OF_YEAR);
} catch (ParseException e) {
e.printStackTrace();
}
return weeks;
}
/**
* 根据起始结束时间计算天数(一个月内的)
* @param begindate:起始时间
* @param enddate:结束时间
* @param monthdays:该月的天数
* @return
*/
public static int getDuration(String begin,String end,int monthdays)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int day1= 0;
int day2 = monthdays - Integer.parseInt(begin.split("-")[2])+1;
try {
Date begindate = sdf.parse(begin);
Date enddate = sdf.parse(end);
long d = enddate.getTime() - begindate.getTime();
day1 = (int) (d/(24 * 60 * 60 * 1000))+1;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return day1>day2?day2:day1;
}
/*
* 根据年份判断该年的天数
*/
public static int getDayOfYear(int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
return cal.getActualMaximum(Calendar.DAY_OF_YEAR);
}
/**
* 根据日期判断为该年的第几天
* @param dateStr:日期字符串"YYYY-MM-DD"
* @return
*/
public static int getDayinYear(String dateStr)
{
int dateSum = 0;
System.out.println(dateStr);
int year = Integer.valueOf(dateStr.split("-")[0]);
int month = Integer.valueOf(dateStr.split("-")[1]);
int day = Integer.valueOf(dateStr.split("-")[2]);
for (int i = 1; i < month; i++){
switch(i){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:dateSum += 31; break;
case 4: case 6: case 9: case 11:dateSum += 30; break;
case 2:
if(((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0))
dateSum += 29;
else dateSum += 28;
}
}
dateSum +=day;
return dateSum;
}
}