JAVA日期相关转化

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值