date 的一些方法

1.

package com.sysoft.oa.rc.bean;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;

public class GetStringDateTime {

	/**
	 * String 转换成 Date
	 * 
	 * @param date
	 *            String类型的Date
	 * @param formatPattern
	 *            时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
	 * @return Date
	 */
	public static Date getDateStringTime(String date, String formatPattern) {
		if (date == null || date.equals("")) {
			return null;
		}
		SimpleDateFormat sdf;
		// SimpleDateFormat sdf = new SimpleDateFormat() ;
		try {
			if ((formatPattern == null) || formatPattern.equals("")) {
				formatPattern = "yyyy-MM-dd HH:mm:ss";
			}
			// sdf.applyPattern(formatPattern);
			sdf = new SimpleDateFormat(formatPattern);
			return sdf.parse(date);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * Date 转换成 String
	 * 
	 * @param Date
	 * @param formatPattern
	 *            时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
	 * @return Date的String格式,如果 Date Date = null 返回 ""
	 */
	public static String getStringDateTime(Date date, String formatPattern) {
		if (date == null) {
			return "";
		}
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
		return sd.format(date);
	}

	/**
	 * Date 转换成 String,可以指定时区
	 * 
	 * @param Date
	 * @param formatPattern
	 *            时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
	 * @return Date的String格式,如果 Date Date = null 返回 ""
	 */
	public static String getStringDateTimeLocale(Date date,
			String formatPattern, Locale locale) {
		if (date == null) {
			return "";
		}
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sd = null;
		if (locale != null) {
			sd = new SimpleDateFormat(formatPattern, locale);
		} else {
			sd = new SimpleDateFormat(formatPattern);
		}

		return sd.format(date);
	}

	/**
	 * Date 转换成 String
	 * 
	 * @param Date
	 * @param formatPattern
	 *            时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
	 * @return Date的String格式,如果 Date Date = null 返回 ""
	 */
	public static String getTimestampString(Timestamp date, String formatPattern) {
		if (date == null) {
			return "";
		}
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
		return sd.format(date);
	}

	/**
	 * 将 Date 的String 格式 通过formatPattern(yyyy-MM-dd) 转换成 新的 String
	 * 
	 * @param Date
	 * @param formatPattern
	 *            时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
	 * @return Date的String格式,如果 String Date = null 返回 ""
	 */
	public static String getStringDatePattern(String date, String formatPattern) {
		if (date == null || date.equals("")) {
			return null;
		}
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		String retVal = GetStringDateTime.getStringDateTime(GetStringDateTime
				.getDateStringTime(date, formatPattern), formatPattern);

		return retVal;
	}

	/**
	 * 
	 * @param day
	 *            输入日期
	 * @param i
	 *            需要增减的天数, 比如 加 1 天, 则输入 1 。 减 1 天 则输入 -1
	 * @param formatPattern
	 *            输入的时间格式,默认 "yyyy-MM-dd HH:mm:ss"
	 * @return String 增减后的日期的String形式
	 */
	public static String nextDay(Date day, long i, String formatPattern) {
		//		  
		// Date day = new Date();
		// System.out.println(GetStringDateTime.getStringDateTime(day,
		// "yyyy-MM-dd"));
		long day1 = day.getTime() + 24L * 60L * 60L * 1000L * i;
		day.setTime(day1);
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		String nextDay = GetStringDateTime
				.getStringDateTime(day, formatPattern);

		return nextDay;
	}

	/**
	 * 得到当前月份的第一天
	 * 
	 * @param formatPattern
	 *            输入的时间格式,默认 "yyyy-MM-dd HH:mm:ss"
	 * @return 几月1号
	 */

	public static String currMonthOfFisrtDay(String formatPattern) {
		String firstDay = "";
		Date date = new Date();
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sd = new SimpleDateFormat(formatPattern);

		Calendar c = Calendar.getInstance();
		c.setTime(date);
		int iDate = c.get(Calendar.DAY_OF_MONTH);

		c.add(Calendar.DAY_OF_MONTH, -iDate + 1);
		date = c.getTime();

		firstDay = sd.format(date);

		return firstDay;

	}

	/**
	 * 获得2个时间段中的所有时间
	 * 
	 * @param from
	 *            开始时间
	 * @param to
	 *            结束时间
	 * @param formatPattern
	 *            返回的时间格式
	 * @return List 2个时间段中的所有 时间
	 */
	public static Set dateToDate(Date from, Date to, String formatPattern) {
		Set set = new TreeSet();
		SimpleDateFormat sdf;
		if (formatPattern == null || formatPattern.equals("")) {
			formatPattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sd = new SimpleDateFormat(formatPattern);

		Date fromT = from;
		Date toT = to;
		if (from.after(to)) {
			from = toT;
			to = fromT;
		} else if (from.equals(to)) {
			set.add(sd.format(from));
			return set;
		}

		set.add(sd.format(from));
		Calendar cal = Calendar.getInstance();
		cal.setTime(from);

		while (true) {
			cal.add(Calendar.DAY_OF_MONTH, 1);

			if (to.after(cal.getTime())) {
				set.add(sd.format(cal.getTime()));
			} else {
				break;
			}
		}

		set.add(sd.format(to));
		return set;
	}

	public static void main(String[] args) {
		System.out.println(getStringDateTime(new Date(), "yyyy-MM-dd a"));

		Date date = getDateStringTime("2007-3-01 14:30", "yyyy-MM-dd mm:ss");
		String day = nextDay(date, -31, "yyyy-MM-dd");
		System.out.println(day);
		System.out.println(date);
		System.out.println(GetStringDateTime.getStringDateTime(new Date(),
				"yyyyMMddHHmmss"));
		System.out.println("-----------------");
		System.out.println(currMonthOfFisrtDay(null));

		Calendar cal = Calendar.getInstance();
		Calendar cal1 = Calendar.getInstance();
		cal.set(1990, 6 - 1, 4);
		cal1.set(2010, 1 - 1, 1);
		Set set = dateToDate(cal.getTime(), cal1.getTime(), "yyyy-MM");
		for (Object s : set) {
			System.out.println(s.toString());
		}

		System.out.println("---------------------------");
		System.out.println(getStringDateTimeLocale(new Date(),
				"yyyy年MM月dd日 EEEE", Locale.CHINA));
	}
}

 2

/*
 * 创建日期 2005-12-14
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package com.sysoft.baseform.process.outer;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;



/**
 * @author Admin
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
public class DateUtil {
	
	private static final String DAFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
	/**
	 * 获得指定日期下周的第一天[周一]
	 * @param specialDate
	 * @return
	 */
	public static Date getFirstDayOfNextWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setTime(specialDate);
		cal.add(Calendar.WEEK_OF_YEAR,1);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		cal.set(Calendar.MILLISECOND,0);
		//cal.add(Calendar.DATE,6);
		System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
		return cal.getTime();
	}
	/**
	 * 获得指定日期下周的最后一天[周日],认为下周的下周的周一00点为止
	 * @param specialDate
	 * @return
	 */
	public static Date getLastDayOfNextWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setTime(specialDate);
		cal.add(Calendar.WEEK_OF_YEAR,2);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return cal.getTime();
	}

	/**
	 * 获得指定日期上周的第一天[周一]
	 * @param specialDate
	 * @return
	 */
	public static Date getFirstDayOfPreviousWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setTime(specialDate);
		cal.add(Calendar.WEEK_OF_YEAR,-1);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		cal.set(Calendar.MILLISECOND,0);
		//cal.add(Calendar.DATE,6);
		System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
		return cal.getTime();
	}
	/**
	 * 获得指定日期上周的最后一天[周日],认为下周的下周的周一00点为止
	 * @param specialDate
	 * @return
	 */
	public static Date getLastDayOfPreviousWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setTime(specialDate);
		//cal.add(Calendar.WEEK_OF_YEAR,-1);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return cal.getTime();
	}

	/**
	 * 获得当前日期所在周的周一0点
	 * @param specialDate
	 * @return
	 */
	public static Date getFirstDayOfCurrentWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		cal.setTime(specialDate);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return cal.getTime();
	}
	
	/**
	 * 获得当前日期所在周的最后时刻,也就是下周一的0点
	 * @param specialDate
	 * @return
	 */
	public static Date getLastDayOfCurrentWeek(Date specialDate){
		Calendar cal = Calendar.getInstance();
		cal.setTime(specialDate);
		cal.add(Calendar.WEEK_OF_YEAR,1);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return cal.getTime();
	}	
	//获得指定日期当前周的最后一天,到周日的23:59为止
	public static Date getLastDayOfCurrentWeekWithSun(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		cal.setTime(date);
		cal.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
		cal.set(Calendar.HOUR_OF_DAY,23);
		cal.set(Calendar.MINUTE,59);
		cal.set(Calendar.SECOND,59);
		return cal.getTime();
	}	
	//从当前日期前推12小时
	public static Date getHalfPreviousDayOfCurrentDay(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR_OF_DAY,-12);
		cal.add(Calendar.SECOND,-1);
		return cal.getTime();
	}
	//下一天,精确到天
	public static String getNextDay(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_YEAR,1);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		return format.format(cal.getTime());
	}
	//下一天,精确到天 参数 String
	public static String getNextDay(String date){
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			cal.setTime(format.parse(date));
		} catch (ParseException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		cal.add(Calendar.DAY_OF_YEAR,1);
		
		return format.format(cal.getTime());
	}	
	//添加 12*len 个小时
	public static String add12Hours(Date date,int len){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR,12*len);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(cal.getTime());
		
	}
	
	public static String add24Hours(Date date,int days){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR,24*days);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(cal.getTime());
	}
	public static String add24Hours(Date date,int days,String pattern){
		if(date == null)
			return "";
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR,24*days);
		SimpleDateFormat format = new SimpleDateFormat(pattern == null || pattern.equals("") ? DAFAULT_PATTERN : pattern);
		String temp =  format.format(cal.getTime());
		return temp;
	}
	
	//添加 12*len 个小时
	public static Date add12HoursReturnDate(Date date,int len){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR,12*len);
		//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return cal.getTime();
		
	}
	
	public static Date add24HoursReturnDate(Date date,int days){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.HOUR,24*days);
		//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return cal.getTime();
	}

	/**
	 * 
	 * @param date 源日期
	 * @param days 日子数
	 * @param type + 或者-
	 * @return
	 */
	public static Date plusOrMinusDate(Date date ,int days){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_YEAR, days);
		return cal.getTime();
	}
	//***********************格式转换************************
	/**
	 * 如果Date== null,返回“”;
	 * 如果pattern== null  默认格式  "yyyy-MM-dd HH:mm:ss";
	 * @param date
	 * @param pattern
	 * @return
	 */
	public static String dateToString(Date date,String pattern){
		if(date == null)
			return "";
		if(pattern == null || pattern.equals(""))
			pattern  = DAFAULT_PATTERN;
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(date);
	}	
	public static String dateToWeekWithoutPrefix(Date date,String pattern){
		if(date == null)
			return "";
		if(pattern == null || pattern.equals(""))
			pattern  = DAFAULT_PATTERN;
		SimpleDateFormat format = new SimpleDateFormat(pattern,Locale.CHINESE);
		String temp =  format.format(date);
		if(temp.length()==3)
			return temp.substring(2);
		return "";
	}
	
	public static String prettyDate(String source,String pattern){
		if(pattern == null || pattern.equals(""))
			pattern  = DAFAULT_PATTERN;
		SimpleDateFormat format = new SimpleDateFormat(pattern,Locale.CHINESE);
		try {
			return format.format(format.parse(source));
		} catch (ParseException e) {
			
		}
		return "";
	}
	/**
	 * 采用了默认格式
	 * @param date
	 * @return
	 */
	public static String dateToString(Date date){
		if(date == null)
			return "";
		SimpleDateFormat format = new SimpleDateFormat(DAFAULT_PATTERN);
		return format.format(date);
	}
	
	public static Date stringToDate(String value,String pattern){
		if(value == null || value.trim().equals(""))
			return null;
		if(pattern == null || pattern.equals(""))
			pattern =DAFAULT_PATTERN;
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		try {
			return format.parse(value);
		} catch (ParseException e) {
			// TODO 自动生成 catch 块
			System.out.println("解析字符串到Date错误,请查看是否是格式错误: Value="+value+";pattern="+pattern);
			e.printStackTrace();
			return null;
		}
	}

	
	public static String getStartTimeOfThisDay(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return DateUtil.dateToString(cal.getTime());
	}
	
	public static String getStartTimeOfNextDay(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_YEAR, 1);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		return DateUtil.dateToString(cal.getTime());
		
	}
	
	public static String getStartTimeOfNextYear(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.YEAR, 1);
		cal.set(Calendar.MONTH, 0);
		cal.set(Calendar.DATE, 1);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		Date dd = cal.getTime();
		return DateUtil.dateToString(dd);
	}
	
	public static String getStartTimeOfThisYear(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.MONTH, 0);
		cal.set(Calendar.DATE, 1);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
		Date dd = cal.getTime();
		return DateUtil.dateToString(dd);
	}
	/**
	 * 返回XXX年XX月XX日 星期X 的形式
	 * @param date
	 * @return
	 */
	public static String getCurrentDateAndWeek(Date date){
		Calendar cal = Calendar.getInstance();
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH)+1;
		int day = cal.get(Calendar.DAY_OF_MONTH);
		int week = cal.get(Calendar.DAY_OF_WEEK);
		return year+"年"+month+"月"+day+"日" + "  星期"+digitToGBK(week);
		
	}
	private static String digitToGBK(int digit){
		if( digit<0)
		return ""+digit;
		switch(digit){
		case 0:
			return "零";
		case 1:
			return "一";
		case 2:
			return "二";
		case 3:
			return "三";
		case 4:
			return "四";
		case 5:
			return "五";
		case 6:
			return "六";
		case 7:
			return "七";
		case 8:
			return "八";
		case 9:
			return "九";
		}
		return "";
	}
	public static void main(String[] args) {
		String s = DateUtil.getCurrentDateAndWeek(new Date());
		System.out.println(s);
	}
}
 

 

3.

public class A {
    
    /**
     * <b>メソッド概要:</b> 当月的几个月后的最后一天。
     * 
     * @param month
     * @return 几个月后的最后一天
     */
    public static String monthOfLastDay(int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.roll(Calendar.DAY_OF_MONTH, -1);

        return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());

    }

    public static void main(String[] args) {
        System.out.println("下个月月底" + monthOfLastDay(1));
        System.out.println("1年1个月月底" + monthOfLastDay(13));

    }
}
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值