DateUtils.java 6.35 KB
package com.bsth.util;

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

public class DateUtils {

	// 获得当天0点时间
	public static int getTimesmorning() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return (int) (cal.getTimeInMillis() / 1000);
	}
	
	// 获得当天0点毫秒时间戳
	public static long getTimestamp() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis();
	}
	
	public static Long getTimesmorning(Calendar cal) {
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis() / 1000;
	}

	// 获得当天24点时间
	public static int getTimesnight() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, 24);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return (int) (cal.getTimeInMillis() / 1000);
	}
	
	// 获得当天24点时间 毫秒
	public static Long getTimesnight2() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, 24);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis();
	}
	
	public static Long getTimesnight(Calendar cal) {
		cal.set(Calendar.HOUR_OF_DAY, 24);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis();
	}

	// 获得本周一0点时间
	public static int getTimesWeekmorning() {
		Calendar cal = Calendar.getInstance();
		cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
		return (int) (cal.getTimeInMillis() / 1000);
	}

	// 获得本周日24点时间
	public static int getTimesWeeknight() {
		Calendar cal = Calendar.getInstance();
		cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
		return (int) ((cal.getTime().getTime() + (7 * 24 * 60 * 60 * 1000)) / 1000);
	}

	// 获得本月第一天0点时间
	public static int getTimesMonthmorning() {
		Calendar cal = Calendar.getInstance();
		cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
		return (int) (cal.getTimeInMillis() / 1000);
	}

	// 获得本月最后一天24点时间
	public static int getTimesMonthnight() {
		Calendar cal = Calendar.getInstance();
		cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		cal.set(Calendar.HOUR_OF_DAY, 24);
		return (int) (cal.getTimeInMillis() / 1000);
	}
	
	private static SimpleDateFormat sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm") 
				,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd")
				,sdfHHmm = new SimpleDateFormat("HH:mm"); 
	public static long getTimesByHHmm(String str) throws ParseException{
		Date d = sdfyyyyMMddHHmm.parse(sdfyyyyMMdd.format(new Date()) + str);
		return d.getTime();
	}
	
	public static String plusDay(String old, int day){
		Calendar cal = null;
		try {
			Date date = sdfyyyyMMdd.parse(old);
			cal = Calendar.getInstance();
			cal.setTime(date);
			cal.add(Calendar.DATE, day);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return sdfyyyyMMdd.format(cal.getTime());
	}
	
	public static String subtractDay(String old, int day){
		Calendar cal = null;
		try {
			Date date = sdfyyyyMMdd.parse(old);
			cal = Calendar.getInstance();
			cal.setTime(date);
			cal.set(Calendar.DATE, cal.get(Calendar.DATE) - day);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return sdfyyyyMMdd.format(cal.getTime());
	}

	public static int calcHHmmDiff(String fcsj, String zdsj) throws ParseException {
		return (int) (sdfHHmm.parse(zdsj).getTime() - sdfHHmm.parse(fcsj).getTime());
	}

	/**
	 * 计算某天是这一年的第几天
	 * @param str
	 * @return
	 */
	public static int calcDaynumberInYear(String str){
		int num = 0;
		SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd");
		try {
			Date date =sdf.parse(str);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			num = calendar.get(Calendar.DAY_OF_YEAR);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return num;
	}
	//前一天
	public static String qyt_date(){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

		String rq = "";
		try {
			Date dNow = new Date();   //当前时间
			Date dBefore = new Date();
			Calendar calendar = Calendar.getInstance(); //得到日历
			calendar.setTime(dNow);//把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -1);  //设置为前一天
			dBefore = calendar.getTime();   //得到前一天的时间
			rq=sdf.format(dBefore);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return rq;
	}

	//后一天
	public static String yit_date(String dateStr) {

		// 创建SimpleDateFormat对象,指定日期格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		try {
			// 解析日期字符串为Date对象
			Date dateObj = sdf.parse(dateStr);

			// 创建Calendar对象,并将Date对象设置为时间
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(dateObj);

			// 计算下一天的日期
			calendar.add(Calendar.DAY_OF_MONTH, 1);

			// 获取下一天的Date对象
			Date nextDayDate = calendar.getTime();

			// 将下一天的Date对象格式化为字符串
			String nextDayStr = sdf.format(nextDayDate);

			// 输出结果
			System.out.println("给定日期: " + dateStr);
			System.out.println("下一天日期: " + nextDayStr);

			return nextDayStr;
		} catch (ParseException e) {
			// 解析日期字符串时发生异常
			e.printStackTrace();
		}
		return null;
	}


}