栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java获取指定时间范围及常用方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java获取指定时间范围及常用方法

常用日期工具

import java.math.RoundingMode;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;


public class DateUtil {

    private static final SimpleDateFormat YMDHMS_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private static final SimpleDateFormat YMDHM_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    private static final SimpleDateFormat YMD_SDF = new SimpleDateFormat("yyyy-MM-dd");

    private static final String HMS_ZERO = " 00:00:00";
    private static final String S_ZERO = ":00";

    
    public static Map getDateMap(Date now, Integer type){
        Map dateMap = new HashMap<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date startDate;
        Date startTime;
        Date endDate;
        Long num = getMinute(type);
        try {
            endDate = sdf.parse(sdf.format(now));
            startDate = new Date(endDate.getTime() - num*60*1000);
            startTime = new Date(endDate.getTime() - num*60*1000 - 60*1000);
        } catch (ParseException e) {
            e.printStackTrace();
            startDate = new Date(new Date().getTime() - num*60*1000);
            startTime = new Date(new Date().getTime() - num*60*1000 - 60*1000);
            endDate = new Date();
        }
        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        dateMap.put("startTime", sdf.format(startTime));
        dateMap.put("startDate", sdf.format(startDate));
        dateMap.put("endDate", sdf.format(endDate));
        return dateMap;
    }
    
    public static Long getMinute(Integer type){
        if(type == 1) {
            return 1L;
        } else if(type == 2) {
            return 10L;
        } else if(type == 3) {
            return 30L;
        } else if(type == 4) {
            return 60L;
        } else if(type == 5) {
            return 24*60L;
        }
        return 1L;
    }
    
    public static String getYesterday(String now){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date yesterday;
        Date nowDate;
        try {
            nowDate = sdf.parse(now);
            yesterday = new Date(nowDate.getTime() - 24*60*60*1000);
        } catch (ParseException e) {
            e.printStackTrace();
            yesterday = new Date(new Date().getTime() - 24*60*60*1000);
        }
        return sdf.format(yesterday);
    }
    
    public static String accuracy(Integer num, Integer total, int scale){
        if(total == 0) {
            return "100";
        }
        DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
        //可以设置精确几位小数
        df.setMaximumFractionDigits(scale);
        //模式 例如四舍五入
        df.setRoundingMode(RoundingMode.HALF_UP);
        double accuracy_num = (double) num/total * 100;
        return df.format(accuracy_num);
    }
    
    public static String getNowTime(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(new Date());
    }

    
    public static Map getNDate(Integer num){
        Date day = new Date(System.currentTimeMillis() - num*24*60*60*1000);
        Map dateMap = new HashMap<>();
        dateMap.put("statsDate", YMD_SDF.format(day));
        dateMap.put("startDate", YMD_SDF.format(day) + " 00:00:00");
        dateMap.put("endDate", YMD_SDF.format(day) + " 23:59:59");
        return dateMap;
    }

    
    public static Map getTodayMap(Date now){
        Map dateMap = new HashMap<>();
        Date startTime = new Date(now.getTime() - 30*60*1000);
        dateMap.put("statsDate", YMD_SDF.format(startTime));
        dateMap.put("startDate", YMD_SDF.format(startTime) + HMS_ZERO);
        dateMap.put("endDate", YMDHM_SDF.format(now) + S_ZERO);
        return dateMap;
    }

    
    public static Map getBeforeHalfDateTime(Date date) {
        Map dateMap = new HashMap<>();
        Date startTime = new Date(date.getTime() - 70*60*1000);
        Date endTime = new Date(date.getTime() - 30*60*1000);
        dateMap.put("startTime", YMDHM_SDF.format(startTime) + ":00");
        dateMap.put("endTime", YMDHM_SDF.format(endTime) + ":00");
        return dateMap;
    }

    
    public static String md5(String source) {
        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'a', 'b', 'c', 'd', 'e', 'f' };
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        md.update(source.getBytes());
        byte[] tmp = md.digest();
        char[] str = new char[16 * 2];
        int k = 0;
        for (int i = 0; i < 16; i++) {
            byte byte0 = tmp[i];
            str[k++] = hexDigits[byte0 >>> 4 & 0xf];
            str[k++] = hexDigits[byte0 & 0xf];
        }
        return new String(str);
    }

    
    public static String makeNum() {
        Random rm = new Random();
        String num = rm.nextInt(9999999) + "";
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 7 - num.length(); i++) {
            sb.append("0");
        }
        num = sb.toString() + num;
        String n = new SimpleDateFormat("yyHHmmssSSS").format(new Date());
        return n+num;
    }

//    public static void main(String[] args) {
//        System.out.println(getYesterday("2020-06-01 10:00:00"));
//        System.out.println(getBeforeHalfDateTime(new Date()));
//    }

    
    public static DateRangeDto getYesterdayRange() {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.add(Calendar.DAY_OF_MONTH, -1);
        setMinTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.add(Calendar.DAY_OF_MONTH, -1);
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }

    private static void setMinTime(Calendar calendar){
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
    }

    private static void setMaxTime(Calendar calendar){
        calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
        calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
        calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
        calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));
    }

    public static String dateFormatyMdHms(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }

    
    public static String packingTime(Integer day,Integer hour,Integer minute,Integer second){
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, day);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, second);
        Date newUnpackingTime = calendar.getTime();
        return dateFormatyMdHms(newUnpackingTime);
    }
    
    public static DateRangeDto getMonthRange(Date date) {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(date);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMaxTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(date);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }


    
    public static DateRangeDto getThisQuarter() {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMinTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }


    
    public static DateRangeDto getThisMonth(){
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMinTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }



    
    public static DateRangeDto getLastMonth(){
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.add(Calendar.MONTH, -1);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMinTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.add(Calendar.MONTH, -1);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }



    
    public static DateRangeDto getLastQuarter() {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMinTime(startCalendar);

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);

        return new DateRangeDto(startCalendar.getTime(), endCalendar.getTime());
    }
    




    public final static String DEFAULT_PATTERN = "MM/dd/yyyy HH:mm:ss";


    public static String format(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
        return sdf.format(date);
    }

}

时间范围实体类:DateRangeDto

import java.util.Date;

public class DateRangeDto {
	private Date start;
	private Date end;

	public DateRangeDto(Date start, Date end) {
		this.start = start;
		this.end = end;
	}
	
	public Date getStart() {
		return start;
	}
	public void setStart(Date start) {
		this.start = start;
	}
	public Date getEnd() {
		return end;
	}
	public void setEnd(Date end) {
		this.end = end;
	}
	
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号