import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class CustomDate {
public static void main(String[] args) {
String dateStr = "2012-12-7";
System.out.println(dateStr + "是" + getWeekOfDate(dateStr));
String dateStr1 = "2013-2-12";
System.out.println(dateStr+" 与 "+dateStr1+" 相差 "+getDays(dateStr1, dateStr) + " 天");
System.out.println("距星期天还有 " + getMondayPlus()+" 天");
System.out.println("本周星期天的日期是 " + getCurrentWeekday());
System.out.println("上月最后一天的日期是 "+getPreviousMonthEnd());
System.out.println("明年最后一天的日期是 "+getNextYearEnd());
System.out.println("本年有 "+getMaxYear()+" 天");
System.out.println("本季度:"+getThisSeasonTime(1));
}
/**String类型转换成日期(Date类型)**/
public static Date StringToDate(String dateStr) {
//1
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date date = formatter.parse(dateStr, pos);
return date;
//2
/**
Date date = null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
date = formatter.parse(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
**/
}
/**根据一个日期,返回是星期几**/
public static String getWeekOfDate(String dateStr) {
Date date = StringToDate(dateStr);
//通过Date获取星期
//1
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return new SimpleDateFormat("EEEE").format(calendar.getTime());
//2
/**
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0) w = 0;
return weekDays[w];
**/
}
/**两个时间之间的天数之差**/
public static long getDays(String dateStr1, String dateStr2) {
if(dateStr1 == null || dateStr1.equals("")) return 0;
if(dateStr2 == null || dateStr2.equals("")) return 0;
Date date1 = StringToDate(dateStr1);
Date date2 = StringToDate(dateStr2);
long day = Math.abs((date1.getTime() - date2.getTime()) / (24*60*60*1000));
return day;
}
/**获取当前日期与本周日相关的天数**/
public static int getMondayPlus() {
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1; //因为按中国礼拜一作为第一天所以这里减1
if(dayOfWeek == 0) {
return 0;
}else {
return 7 - dayOfWeek;
}
}
/**获取本周星期日的日期**/
public static String getCurrentWeekday(){
int mondayPlus = getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
DateFormat format = DateFormat.getDateInstance();
String preMonday = format.format(monday);
return preMonday;
}
/**获取上月最后一天的日期**/
public static String getPreviousMonthEnd(){
String str = "";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.MONTH, -1); //减一个月
lastDate.set(Calendar.DATE, 1); //把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1); //日期回滚一天,也就是本月最后一天
str = format.format(lastDate.getTime());
return str;
}
/**获取明年最后一天的日期**/
public static String getNextYearEnd(){
String str = "";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.YEAR, 1); //加一年
lastDate.set(Calendar.DAY_OF_YEAR, 1);
lastDate.roll(Calendar.DAY_OF_YEAR, -1);
str = format.format(lastDate.getTime());
return str;
}
/**获得本年有多少天**/
public static int getMaxYear(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, 1); //把日期设为当年第一天
calendar.roll(Calendar.DAY_OF_YEAR, -1); //把日期回滚一天
int MaxYear = calendar.get(Calendar.DAY_OF_YEAR);
return MaxYear;
}
/**是否闰年**/
public static boolean isLeapYear(int year){
return (year%4==0 && year%100!=0) || (year%400==0);
}
/**获取某年某月的最后一天**/
public static int getLastDayOfMonth(int year, int month){
if(month == 1 || month == 3 || month == 5 || month ==7
|| month == 8 || month == 10 || month ==12) {
return 31;
}
if(month == 4 || month == 6 || month == 9 || month == 11){
return 30;
}
if(month == 2) {
if(isLeapYear(year)) {
return 29;
} else {
return 28;
}
}
return 0;
}
/**获得本季度**/
public static String getThisSeasonTime(int month){
int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int season = 1;
if(month>=1 && month<=3) season = 1;
if(month>=4 && month<=6) season = 2;
if(month>=7 && month<=9) season = 3;
if(month>=10 && month<=12) season = 4;
int start_month = array[season-1][0];
int end_month = array[season-1][2];
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy"); //可以方便地修改日期格式
String years = format.format(date);
int years_value = Integer.parseInt(years);
int start_days = 1;
int end_days = getLastDayOfMonth(years_value, end_month);
String seasonDate = years_value+"-"+start_month+"-"+start_days
+" ~ "+years_value+"-"+end_month+"-"+end_days;
return seasonDate;
}
}
运行结果:
2012-12-7是星期五
2012-12-7 与 2013-2-12 相差 67 天
距星期天还有 5 天
本周星期天的日期是 2013-1-13
上月最后一天的日期是 2012-12-31
明年最后一天的日期是 2014-12-31
本年有 365 天
本季度:2013-1-1 ~ 2013-3-31