package Test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class TestTimes {

	public static void main(String args[]) throws ParseException {
		//GregorianCalendar ca = new GregorianCalendar();
		//System.out.println(ca.get(GregorianCalendar.AM_PM));
		Calendar curr = Calendar.getInstance();
		curr.set(Calendar.DAY_OF_MONTH,curr.get(Calendar.DAY_OF_MONTH)-7);
		Date date = curr.getTime();
		String date1 = getStrDateTimeFormat(date);
		System.out.println("上周一"+date1);
		System.out.println("++++++"+getOneWeekDates(date1));
	}
	
	/**
	 * 把日期转化为字符串格式,如:2007-01-05
	 * @param d
	 * @return
	 */
	public static String getStrDateTimeFormat(Date d) {
		String strd = null;
		if (d == null)
			return strd;
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		strd = formatter.format(d); // 将日期时间格式化
		return strd;
	}
	
	/**
	 * 获得一周七天的日期
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static String[] getOneWeekDates(String date) throws ParseException {
		return getOneWeekDates(reviseSundayBug(date), "yyyy-MM-dd");
	}
	
	/**
	 * 修正当前日期是周日时计算本周日期的bug
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	private static String reviseSundayBug(String date) throws ParseException {
		if (getDayOfTheWeek(date) == Calendar.SUNDAY) {
			Calendar c = Calendar.getInstance();
			c.setTime(parseDateStr(date, "yyyy-MM-dd"));
			c.add(Calendar.DATE, -7);
			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			date = format.format(c.getTime());
		}
		return date;
	}
	
	/**
	 * 按照指定格式日期获得一周七天的日期
	 * @param date
	 * @param df
	 * @return
	 * @throws ParseException
	 */
	public static String[] getOneWeekDates(String date, String df)
			throws ParseException {
		String[] dates = new String[7];
		dates[0] = getDayOfTheWeek(date, df, Calendar.MONDAY);
		dates[1] = getDayOfTheWeek(date, df, Calendar.TUESDAY);
		dates[2] = getDayOfTheWeek(date, df, Calendar.WEDNESDAY);
		dates[3] = getDayOfTheWeek(date, df, Calendar.THURSDAY);
		dates[4] = getDayOfTheWeek(date, df, Calendar.FRIDAY);
		dates[5] = getDayOfTheWeek(date, df, Calendar.SATURDAY);
		dates[6] = getDayOfTheWeek(date, df, Calendar.SUNDAY);
		System.out.println("上周一"+dates[0]);
		System.out.println("上周日"+dates[6]);
		return dates;
	}
	
	/**
	 * 获得指定日期所在周的周几的日期
	 * @param date 字符串格式的日期
	 * @param df 日期的格式化字符串,如yyyy-MM-dd
	 * @param DAY_OF_WEEK 周几,如Calendar.MONDAY
	 * @return
	 * @throws ParseException
	 */
	public static String getDayOfTheWeek(String date, String df, int DAY_OF_WEEK) throws ParseException {
		Calendar c = Calendar.getInstance();
		c.setTime(parseDateStr(date, df));
		c.set(Calendar.DAY_OF_WEEK, DAY_OF_WEEK);
		// 中国习惯是周日是一个星期的最后一天
		if (DAY_OF_WEEK == Calendar.SUNDAY) {
			c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
			c.add(Calendar.DATE, 1);
		}
		return new SimpleDateFormat(df).format(c.getTime());
	}

	/**
	 * 获得当前日期是周几
	 * @param date
	 * @return 周几在Calendar类中对应的静态变量值
	 * @throws ParseException
	 */
	public static int getDayOfTheWeek(String date) throws ParseException {
		Calendar c = Calendar.getInstance();
		c.setTime(parseDateStr(date, "yyyy-MM-dd"));
		return c.get(Calendar.DAY_OF_WEEK);
	}
	
	/**
	 * 解析时间日期字符串
	 * @param date
	 * @param format
	 * @return
	 * @throws ParseException
	 */
	public static Date parseDateStr(String date, String format) throws ParseException {
		DateFormat df = new SimpleDateFormat(format);
		try {
			return df.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
			throw e;
		}
	}	
}
最近下载更多
Weibn  LV1 2021年7月22日
chenhan_819  LV1 2018年2月3日
362883285  LV2 2017年8月5日
你的odd网友  LV1 2017年6月2日
819905105  LV6 2013年4月16日
最近浏览更多
Weibn  LV1 2021年7月22日
kong.yee  LV40 2020年6月26日
lsq54365  LV14 2020年5月20日
二十一颜  LV2 2019年11月25日
zzzzsc  LV1 2019年6月26日
hyaxzz  LV5 2019年1月2日
dylanchan 2018年11月15日
暂无贡献等级
eeehhh  LV3 2018年8月20日
tangjun  LV17 2018年6月13日
zhoule1226  LV1 2018年6月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友