关于时间的工具类

在开发中,我们无可避免的会需要对时间进行操作,下面博主整理了一些关于时间的方法,并封装好,有需要的可以直接使用:

import java.sql.Timestamp;
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.TimeZone;

import org.apache.poi.util.SystemOutLogger;


/**
 * 按格式获取时间
 * */
public class TimeUtils {
	private  static int  weeks = 0;//
	private int MaxDate;//一月最大的天数
	private int MaxYear;//一年最大的天数
	
	private static GregorianCalendar  gc = new GregorianCalendar();
	private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	private static SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	private static SimpleDateFormat linkDateFormat = new SimpleDateFormat("yyyyMMdd");
	private static SimpleDateFormat linkTimeFormat = new SimpleDateFormat("yyyyMMddHHmmss");
	private static SimpleDateFormat linkMonthFormat = new SimpleDateFormat("yyyyMM");
	//获取当前日期
	public  static String getNowTime(){
		Date now = new Date();
		return dateFormat.format(now);
	}
	//获取前一天//type = 1 正常数据。根据capturetime。type=2为打分数据。因为打分为前天的数据所以要往前移二天
	public static String getYesterday(int type){
		Calendar calendar = Calendar.getInstance();
		if(type == 1)
			calendar.add(Calendar.DATE, -1);
		else
			calendar.add(Calendar.DATE, -2);
		return dateFormat.format(calendar.getTime());
	}
	//获取本周1的日期
	public static String getMondayOfWeed(){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -7);
		return dateFormat.format(calendar.getTime());
	}
	
	//获取前三天的日期
	public static String getThreeBeforeDay(){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -3);
		return dateFormat.format(calendar.getTime());
	}
	//获取当前日期与本周日相差的天数
	private static int getMondayPlus(){
		Calendar cd = Calendar.getInstance();
		int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1;//周一为第一天
		if(dayOfWeek == 1)
			return 0;
		else
			return 1 - dayOfWeek;
	}
	//获取本月第一天日期
	public static String getFirstDayOfMonth(){
		Calendar lastDate = Calendar.getInstance();
		lastDate.set(Calendar.DATE, 1);
		return dateFormat.format(lastDate.getTime());
	}
	//获取传入日期
	public  static String getInputDate(long time){
		Date now = new Date(time);
		return linkDateFormat.format(now);
	}
	//获取传入星期
	public static int getInputWeek(long time){
		Date now = new Date(time);
		Calendar cal = Calendar.getInstance();
		weeks = cal.get(Calendar.DAY_OF_WEEK)-1;
		return weeks;
	}
	//获取当前日期
	public  static String getNowDate(){
		Date now = new Date();
		return linkDateFormat.format(now);
	}
	
	//获取前三天日期
	public static String getThreeDateOfNow(){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -3);
		return linkDateFormat.format(calendar.getTime());
	}
	//获取七天前日期
	public static String getDateOfWeed(){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -7);
		return linkDateFormat.format(calendar.getTime());
	}
	//add by zhanghe 20110803
	//获取n天前日期
	public static String getDateOfNDaysAgo(int n){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -n);
		return dateFormat.format(calendar.getTime());
	}
	//获取当前日期带分钟
	public  static String getNowTimeWithMinutes(){
		Date now = new Date();
		return dateTimeFormat.format(now);
	}
	
	//获取当前日期带分钟
	public  static String getNowTimeWithMinutes(Long time){
		Date now = new Date(time);
		return dateTimeFormat.format(now);
	}
	//获取指定日期之后  指定天数  的日期字符串
	public static String getAtteDate(Timestamp time,int day) {
		
		gc.setTime(new Date(time.getTime()));
		gc.add(5, +day);
		gc.set(gc.get(Calendar.YEAR), gc.get(Calendar.MONTH),gc.get(Calendar.DATE));
		return dateFormat.format(gc.getTime());
	}
	//获取指定日期之后指定年/月/天的日期
	public static String getTargetDate(String targetDate,int year,int month,int day) throws ParseException{
		Calendar c = Calendar.getInstance();
		c.setTime(dateFormat.parse(targetDate));
		c.add(Calendar.YEAR, year);
		c.add(Calendar.MONTH, month);
		c.add(Calendar.DAY_OF_MONTH, day);
		return dateFormat.format(c.getTime());
	}
	
	//获取指定日期和当天的相隔天数
	public static Long getDays(Timestamp atteTime){
		if(atteTime==null){
			
			return null;
		}
		return (System.currentTimeMillis()-atteTime.getTime())/(1000*60*60*24);
	}
	
	/**
	 * 获取日期,格式为yyyy-MM-dd
	 * @param offset 偏移量,0:当天的日期,-1:昨天的日期,1:明天的日期....
	 * @return
	 */
	public static String getDate(int offset){
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DAY_OF_YEAR, offset);
		return dateFormat.format(c.getTime());
	}
	
	/**
	 * 获取时间,格式为yyyy-MM-dd HH:mm:ss
	 * @param offset 偏移量,0:当天的日期,-1:昨天的日期,1:明天的日期....
	 * @return
	 */
	public static String getTime(int offset){
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DAY_OF_YEAR, offset);
		return dateTimeFormat.format(c.getTime());
	}
	
	//获取当前时间串
	public  static String getNowLinkTime(){
		Date now = new Date();
		return linkTimeFormat.format(now);
	}
	/**
	 * 将指定格式的字符串转换成时间Date类型
	 * @param strDate  需要转换的字符串
	 * @param formatDate 需要转换字符串的格式 (yyyy-MM-dd)
	 * @return
	 */
	public static Date getDateByStr(String strDate,String formatDate){
		SimpleDateFormat sdf = new SimpleDateFormat(formatDate);
		Date date = null;
		try {
			date=  sdf.parse(strDate);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	/**
	 * 将Date 转换成指定格式的String
	 * @param date 需要转换的date
	 * @param formatDate 要转换成字符串的格式 (yyyy-MM-dd)
	 * @return
	 */
	public static String getStrByDate(Date date,String formatDate){
		SimpleDateFormat sdf = new SimpleDateFormat(formatDate);
		String strDate = null;
		strDate = sdf.format(date);
		return strDate;
	}
	
	/**
	 * 将秒转换成日期格式的字符串
	 * @param millis 秒 Long
	 * @return String 要转换成字符串的格式 (yyyy-MM-dd yyyy-MM-dd HH:mm:ss)
	 */
	public static String millsToDate(long millls){
		  TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
	      TimeZone.setDefault(tz);
	      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	      String times = format.format(new Date(millls * 1000L));
		return times;
	}
	/**
	 * 将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成秒数
	 * @param String date
	 * @return
	 */
	public static long dateToLong (String datetime) {     
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = format.parse(datetime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal.getTimeInMillis() / 1000;
	}
	
	/**
	 * 将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成秒数
	 * @param String date
	 * @return
	 */
	public static long dateToLongDay (String datetime) {     
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = format.parse(datetime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal.getTimeInMillis() / 1000;
	}
	
	public static long dateToLong (String datetime, String formatStr) {     
		SimpleDateFormat format = new SimpleDateFormat(formatStr);
		Date date = null;
		try {
			date = format.parse(datetime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal.getTimeInMillis() / 1000;
	}
	
	/**
	 * 将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成毫秒数
	 * @param String date
	 * @return
	 */
	public static long dateToMillLong (String datetime) {     
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = format.parse(datetime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal.getTimeInMillis();
	}
	/**
	 * 返回两个日期相隔的天数
	 * @param date1
	 * @param date2
	 * @return int 
	 */
	  static public int diffDate(java.util.Date date1,java.util.Date date2) {
	     return (int)((date1.getTime()-date2.getTime())/ (24*60*60*1000));
	  }
	 /**
	  * 返回某个日期的前后几天
	  * @param date
	  * @param day
	  * @return
	  */
	  static public java.util.Date incDate(java.util.Date date,int day)
	    {
	        Calendar cal = new GregorianCalendar();
	        cal.setTime(date);
	        cal.add(Calendar.DAY_OF_YEAR,day);
	        return cal.getTime();
	    }
	
	  /**
	   * 以当前时间为起点,获取输入时间点的数据
	   * @param day
	   * @return
	   */
		public static long getinputDaysOfNow(int day,long starttime){
		     Calendar currentDate = new GregorianCalendar();
			 currentDate.setTime(new Date(starttime));
			 currentDate.add(Calendar.DATE, day);
			 currentDate.set(Calendar.HOUR_OF_DAY,0);
			 currentDate.set(Calendar.MINUTE, 0);
			 currentDate.set(Calendar.SECOND, 0);
			 currentDate.set(Calendar.MILLISECOND, 0);
			 return  (currentDate.getTime().getTime())/1000;
		}
		
	  /**
	   * 获取当天的开始时间
	   * @author lihw
	   * @date 2016-8-25上午10:38:23	
	   * @return
	   */
	  static public long getTodayStartTime(){
		     long time = System.currentTimeMillis();
		     Calendar currentDate = new GregorianCalendar();
			 currentDate.setTime(new Date(time));
			 currentDate.set(Calendar.HOUR_OF_DAY,0);
			 currentDate.set(Calendar.MINUTE, 0);
			 currentDate.set(Calendar.SECOND, 0);
			 currentDate.set(Calendar.MILLISECOND, 0);
			 return  (currentDate.getTime().getTime())/1000;
	  }
	  
	  /**
	   * 获取传入时间的 日期天 
	   * @author lihw
	   * @date 2016-9-3上午11:00:43	
	   * @param time 10为数字
	   * @return
	   */
	  public static String getStringDay(long time){
		    String strDate = null;
			strDate = dateFormat.format(time*1000);
			return strDate;
	  }
	  public static String getStringtime(long time){
		    String strDate = null;
			strDate = dateTimeFormat.format(time*1000);
			return strDate;
	  }
		/**
		 * 获取传入时间天的开始时间
		 * 
		 * @author lihw
		 * @date 2016-8-25上午10:38:23
		 * @return
		 */
	  public static  long getTodayStartTime(long time) {
			Calendar currentDate = new GregorianCalendar();
			currentDate.setTime(new Date(time));
			currentDate.set(Calendar.HOUR_OF_DAY, 0);
			currentDate.set(Calendar.MINUTE, 0);
			currentDate.set(Calendar.SECOND, 0);
			currentDate.set(Calendar.MILLISECOND, 0);
			return (currentDate.getTime().getTime()) / 1000;
		}

	  /** 获取输入时间的当月开始时间*/
	 public static long getFirstDayTimeOfMonth(long time){
		 Calendar currentDate =Calendar.getInstance();
		 currentDate.setTime(new Date(time));
		 currentDate.set(Calendar.HOUR_OF_DAY, 0);
		 currentDate.set(Calendar.MINUTE, 0);
		 currentDate.set(Calendar.SECOND, 0);
		 currentDate.set(Calendar.MILLISECOND, 0);
		 currentDate.set(Calendar.DATE, currentDate.getMinimum(Calendar.DAY_OF_MONTH));
		 return getTodayStartTime(currentDate.getTime().getTime());
		 
	 }
	  /**
		 * 获取传入时间天的结束时间
		 * 
		 * @author lihw
		 * @date 2016-8-25上午10:38:23
		 * @return
		 */
	  public static  long getTodayEndTime(long time) {
			Calendar currentDate = new GregorianCalendar();
			currentDate.setTime(new Date(time));
			currentDate.set(Calendar.HOUR_OF_DAY, 23);
			currentDate.set(Calendar.MINUTE, 59);
			currentDate.set(Calendar.SECOND, 59);
			currentDate.set(Calendar.MILLISECOND, 999);
			return (currentDate.getTime().getTime()) / 1000;
		}
		/**
		 * 获取传入时间天 的时间
		 * 
		 * @author lihw
		 * @date 2016-8-25上午10:38:23
		 * @return
		 */
		public static  long getTodayEndTime(long time,int days) {
			Calendar currentDate = new GregorianCalendar();
			currentDate.setTime(new Date(time));
			currentDate.add(Calendar.DAY_OF_MONTH, days);
			return (currentDate.getTime().getTime())/1000;
		}

		/**
		 * 传入的时间 和格式获取时间long
		 * @author lihw
		 * @date 2016-9-3下午05:01:07	
		 * @param datetime 时间
		 * @param dateFormat 时间格式
		 * @return long 14位
		 */
		public static long getLongTime(String datetime,String dateFormat){
			DateFormat df = new SimpleDateFormat(dateFormat);
			Date date = null;
			try {
				date = df.parse(datetime);
			} catch (ParseException e) {
				e.printStackTrace();
			}
			Calendar cal = Calendar.getInstance();
			cal.setTime(date);
			return cal.getTimeInMillis();
		}
		
		/**
		 * 获取当时时间 10位
		 * @author lihw
		 * @date 2016-9-29上午11:24:31	
		 * @param time
		 * @param days
		 * @return
		 */
		public static  long getNowtime() {
			return System.currentTimeMillis()/1000;
		}
		
		/**
		 * 将秒转换成日期格式的字符串
		 * @param millis 秒 Long
		 * @return String 要转换成字符串的格式 (yyyy/MM/dd yyyy/MM/dd HH:mm:ss)
		 */
		public static String millsToDate1(long millls){
			  TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
		      TimeZone.setDefault(tz);
		      SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		      String times = format.format(new Date(millls * 1000L));
			return times;
		}
		
		/** 将绝对秒数转换成整点 */
		public static long dateToHour(String date){
			long dateHour = Long.valueOf(date)/3600*3600;
			return dateHour;
		}
		
		//获取当前年月
		public  static String getNowMonth(){
			Date now = new Date();
			return linkMonthFormat.format(now);
		}
		
		//获取上月的年月
		public  static String getAgoMonth(){
			 int n = 1;
			Calendar calendar = Calendar.getInstance();
			calendar.add(Calendar.DATE, -n);
			return linkMonthFormat.format(calendar.getTime());
		}
		
		public  static String toNowMonth(String date){
			if(date!=null && !"".equals(date)){
				String sta = null;
				try {
					Date d=new SimpleDateFormat("yyyy-MM-dd").parse(date);
					sta=linkMonthFormat.format(d);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return sta;
			}else{
				Date now = new Date();
				return linkMonthFormat.format(now);
			}
		}
	  
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值