java程序获取一些常用时间的方法

package core.func;

import flex.messaging.util.UUIDUtils;
import groovy.swing.impl.Startable;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;
@SuppressWarnings("all")
public class DataCllectBiz {

	String str = "";
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	Calendar lastDate = null;
	private int weeks = 0;	
	/**
	 * 返回上月第一天
	 */ 
	public String getPrefistDay() {
		lastDate = Calendar.getInstance();
		lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
		lastDate.add(Calendar.MONTH, -1);// 减一个月,变为上月的1号
		// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
		str = sdf.format(lastDate.getTime());
		return str;
	}

	/**
	 * 返回前三个月第一天
	 */ 
	public String getTreefistDay() {
		lastDate = Calendar.getInstance();
		lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
		lastDate.add(Calendar.MONTH, -3);// 减一个月,变为上月的1号
		// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
		str = sdf.format(lastDate.getTime());
		return str;
	}

	/** 
	 * 返回前六个月第一天
	 */
	public String getSixfistDay() {
		lastDate = Calendar.getInstance();
		lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
		lastDate.add(Calendar.MONTH, -6);// 减一个月,变为上月的1号
		// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
		str = sdf.format(lastDate.getTime());
		return str;
	}

	/**
	 *返回上月最后一天 
	 */ 
	public String getPreLastDay() {
		lastDate = Calendar.getInstance();
		lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
		// lastDate.add(Calendar.MONTH,-1);//减一个月,变为上月的1号
		lastDate.add(Calendar.DATE, -1);// 减去一天,变为上月最后一天
		str = sdf.format(lastDate.getTime());
		return str;
	}

	
	DateFormat df = DateFormat.getDateInstance();
	/**
	 * getTime(type,n) type 日期类型(week、month、quart、year) n
	 * week的第几天,month的第几周,quart和year的第几个月 当n为0时返回的是整个时间段
	 */
	public List<String> getTime(String type, int n) {
		List<String> dateList = new ArrayList<String>();
		if (n == 0) {
			dateList.add(this.getTime(type, 1).get(0));
			if ("week".equals(type)) {
				dateList.add(this.getTime(type, 7).get(1));
			} else if ("month".equals(type)) {
				dateList.add(this.getTime(type, 4).get(1));
			} else if ("quart".equals(type)) {
				dateList.add(this.getTime(type, 3).get(1));
			} else if ("year".equals(type)) {
				dateList.add(this.getTime(type, 6).get(1));
			}
		} else {
			if ("week".equals(type)) {
				int mondayPlus = this.getMondayPlus();
				GregorianCalendar currentDate = new GregorianCalendar();
				currentDate.add(GregorianCalendar.DATE, mondayPlus + (8 - n)
						* (-1));
				Date day = currentDate.getTime();
				String preday = df.format(day);
				dateList.add(preday + " 0:00:00");
				dateList.add(preday + " 23:59:59");
			} else if ("month".equals(type)) {
				int mondayPlus = this.getMondayPlus();
				GregorianCalendar currentDate = new GregorianCalendar();
				currentDate.add(GregorianCalendar.DATE, mondayPlus
						+ (29 - (n + 6 * (n - 1))) * (-1));
				Date day = currentDate.getTime();
				String preday = df.format(day);
				dateList.add(preday + " 0:00:00");

				currentDate.add(GregorianCalendar.DATE, 6);
				day = currentDate.getTime();
				preday = df.format(day);
				dateList.add(preday + " 23:59:59");
			} else if ("quart".equals(type)) {
				Calendar lastDate = Calendar.getInstance();
				lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
				lastDate.add(Calendar.MONTH, -1 * (4 - n));// 减一个月,变为上月的1号
				String str = df.format(lastDate.getTime());
				dateList.add(str + " 0:00:00");

				lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
				lastDate.add(Calendar.DATE, -1);// 减去一天,变为上月最后一天
				String str2 = df.format(lastDate.getTime());
				dateList.add(str2 + " 23:59:59");
			} else if ("year".equals(type)) {
				Calendar lastDate = Calendar.getInstance();
				lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
				lastDate.add(Calendar.MONTH, -1 * (7 - n));// 减一个月,变为上月的1号
				String str = df.format(lastDate.getTime());
				dateList.add(str + " 0:00:00");

				lastDate.add(Calendar.MONTH, 1);
				lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
				String str2 = df.format(lastDate.getTime());
				dateList.add(str2 + " 23:59:59");
			}
		}
		return dateList;
	}

	/**
	 * 获得当前日期与本周一相差的天数
	 * 
	 */ 
	private int getMondayPlus() {
		Calendar cd = Calendar.getInstance();
		// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
		int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
		if (dayOfWeek == 1) {
			return -6;
		} else {
			return 2 - dayOfWeek;
		}
	}

	/**
	 * 获得上周星期一的日期
	 * */ 
	public String getPreviousMonday() {
		weeks = -1;
		int mondayPlus = this.getMondayPlus();
		GregorianCalendar currentDate = new GregorianCalendar();
		currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
		Date monday = currentDate.getTime();
		DateFormat df = DateFormat.getDateInstance();
		String preMonday = df.format(monday);
		return preMonday;
	}

	/**
	 *  获得上周星期日的日期
	 * @return
	 *    返回上周日的日期,String类型
	 */
	public String getPreviousWeekSunday() {
		weeks = -1;

		int mondayPlus = this.getMondayPlus();
		GregorianCalendar currentDate = new GregorianCalendar();
		currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
		Date monday = currentDate.getTime();
		DateFormat df = DateFormat.getDateInstance();
		String preMonday = df.format(monday);
		return preMonday;
	}

	/**
	 * 取得当前日期是第几周(在日程中的)
	 * 
	 * @param date
	 * @return
	 */
	public int getWeekOfYearWithCPlan(String datestr) {
		Date date;
		try {
			date = sdf.parse(datestr);
			Calendar calendar = Calendar.getInstance();
			calendar.setFirstDayOfWeek(Calendar.MONDAY);
			calendar.setTime(date);
			System.out.println("第几周:" + calendar.get(Calendar.WEEK_OF_YEAR));
			return calendar.get(Calendar.WEEK_OF_YEAR);
		} catch (ParseException e) {

			e.printStackTrace();
			return -1;

		}

	}
/**
  *获得本周星期一的日期
  */ 
 public String getNowMonday() {
  //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  int mondayPlus = this.getMondayPlus();
  GregorianCalendar currentDate = new GregorianCalendar();
  currentDate.add(GregorianCalendar.DATE, mondayPlus);
  Date monday = currentDate.getTime();
  DateFormat df = DateFormat.getDateInstance();
  String nowMonday = df.format(monday);
  return nowMonday;
 }

 /**   *获得四周前星期一的日期   */  public String getfourMonday() {   weeks = -4;   int mondayPlus = this.getMondayPlus();   GregorianCalendar currentDate = new GregorianCalendar();   currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);   Date monday = currentDate.getTime();   DateFormat df = DateFormat.getDateInstance();   String preMonday = df.format(monday);   return preMonday;  }

 /**   *  获得四周前星期天的日期   *   */  public String getfourWeekSunday() {   weeks = -22;   int mondayPlus = this.getMondayPlus();   GregorianCalendar currentDate = new GregorianCalendar();   currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);   Date monday = currentDate.getTime();   DateFormat df = DateFormat.getDateInstance();   String preMonday = df.format(monday);   return preMonday;  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值