0
点赞
收藏
分享

微信扫一扫

关于Java中时间转化的util小工具

AbrahamW 2023-09-07 阅读 48
  1. 秒 --> 时分秒
	public static String secToTime(int seconds){
		int hour = seconds / 3600;
		int minute = (seconds - hour * 3600)/60;
		int seconds = (seconds - hour * 3600 - minute * 60);
		
		StringBuffer sb = new StringBuffer();
		if(hour > 0){
			sb.append(hour + "小时");
		}
		if(minute > 0){
			sb.append(minute + "分");
		}
		if(seconds > 0){
			sb.append(seconds + "秒");
		}
		if(seconds == 0){
			sb.append("< 1秒");
		}
		return sb.toString();
	}
  1. String + 日期格式 --> Date
public static Date getDateFromString(String day, String pattern){
	try{
		LocalDateTime localDateTime = LocalDateTime.parse(day, DateTimeFormatter.ofPattern(pattern));
        long milli = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
        return new Date(milli);
	} catch (Excetpione e){
		return null;
	}
}
  1. String --> Date1
	public static Date strToDate(String dateTime) throws ParseException {
        return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse(dateTime);
    }
  1. String --> Date2
public static Date str2Date(String dateTime) {
        try {
            return (new SimpleDateFormat("yyyy-MM-dd")).parse(dateTime);
        } catch (Exception e) {
            return null;
        }
    }

  1. String --> Date3
public static Date str2Date2(String dateTime) throws ParseException {
        return (new SimpleDateFormat("yyyyMMdd")).parse(dateTime);
    }

  1. 时间格式规整1
public static String formatDate(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }
  1. 时间格式规整2
public static String formatDate2(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(date);
    }

  1. 时间格式规整3
public static String formatDate3(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        return sdf.format(date);
    }

  1. 时间格式规整4
public static String formatDate4(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        return sdf.format(date);
    }

  1. 在指定date + hours(hours可为负)
public static Date addDateHours(Date date, int hours) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, hours);
        return calendar.getTime();
    }

  1. 在指定date + days(days可为负)
public static Date addDateDays(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);
        return calendar.getTime();
    }
  1. Date相减差算天数
public static long getDaySub(Date beginDate, Date endDate) {
        long day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
        return day;
    }

  1. Date --> LocalDate
public static LocalDate toLocalDate(Date date) {
        if (null == date) {
            return null;
        }
        return new java.sql.Date(date.getTime()).toLocalDate();
    }

  1. LocalDate --> Date
public static Date toDate(LocalDate localDate) {
        return java.sql.Date.valueOf(localDate);
    }

  1. Date相减算时间差(返回String)
public static String calculateDuration(Date from, Date to) {
        if (from == null || to == null || from.after(to)) {
            return "";
        }
        long diffSec = (to.getTime() - from.getTime()) / 1000;
        return convertToDuration(diffSec);
    }

  1. 时间差转化成天小时分钟
public static String convertToDuration(Long diffSec) {
        if (diffSec == null || diffSec < 0) {
            return "";
        }
        long nd = 24 * 60 * 60;
        long nh = 60 * 60;
        long nm = 60;
        long day = diffSec / nd;
        long hour = diffSec % nd / nh;
        long min = diffSec % nd % nh / nm;
        StringBuffer sb = new StringBuffer();
        if (day > 0) {
            sb.append(day + "天");
        }
        if (hour > 0) {
            sb.append(hour + "小时");
        }
        if (min > 0) {
            sb.append(min + "分钟");
        }
        return sb.length() != 0 ? sb.toString() : "1分钟内";
    }
  1. 当前时间是周几
public static int getDayOfWeek(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_WEEK) - 1 != 0 ? cal.get(Calendar.DAY_OF_WEEK) - 1 : 7;
    }

  1. 当前时间是周几
public static int getDayOfWeek() {
        Calendar cal = Calendar.getInstance();
        return cal.get(Calendar.DAY_OF_WEEK) - 1 != 0 ? cal.get(Calendar.DAY_OF_WEEK) - 1 : 7;
    }

  1. Date --> 对应Date的最早时间
public static Date getStartTime(Date date) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date);
        c1.set(Calendar.HOUR_OF_DAY, 0);
        c1.set(Calendar.MINUTE, 0);
        c1.set(Calendar.SECOND, 0);
        return c1.getTime();
    }
  1. Date --> 对应Date的最晚时间
public static Date getEndTime(Date date) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date);
        c1.set(Calendar.HOUR_OF_DAY, 23);
        c1.set(Calendar.MINUTE, 59);
        c1.set(Calendar.SECOND, 59);
        return c1.getTime();

    }

  1. 给一个Date加上几天
public static Date addDay(int count, Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_YEAR, count);
        return cal.getTime();
    }

  1. 加上几分钟
public static Date addMinutes(int count) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MINUTE, count);
        return cal.getTime();
    }

  1. 加上几秒
public static Date addSeconds(int count) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.SECOND, count);
        return cal.getTime();
    }

  1. Date --> 获取相差几年的时间,并且分秒都是0
public static Date addYearWithZeroClock(Date date, int number) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        // 将时分秒清零
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.add(Calendar.YEAR, number);
        return calendar.getTime();
    }

  1. double型utc时间戳 --> yyMMddHHmmssSSSSSS 的long型时间戳
private static FastDateFormat fastDateFormat = FastDateFormat.getInstance("yyMMddHHmmssSSS");
public static final String SPLIT_POINT = ".";
public static long utcToHumanIdentifiable(double val) {
        BigDecimal bigDecimal = new BigDecimal(val * 1000, MathContext.DECIMAL64);
        long longValue = bigDecimal.longValue();
        StringBuilder microseconds = new StringBuilder(bigDecimal.toString());
        if (!microseconds.toString().contains(AnalysisLayerDataConstants.SPLIT_POINT)) {
            microseconds = new StringBuilder("000");
        } else {
            microseconds = new StringBuilder(microseconds.substring(microseconds.indexOf(".") + 1));
            for (; microseconds.length() < 3; ) {
                microseconds.append("0");
            }
        }
        return Long.parseLong(fastDateFormat.format(new Date(longValue)) + microseconds.substring(0, 3));
    }

  1. 根据时间和时间格式,校验Date是否正确
public static boolean isLegalDate(String sDate, String format) {
        if (sDate == null) {
            return false;
        }
        DateFormat formatter = new SimpleDateFormat(format);
        try {
            Date date = formatter.parse(sDate);
            return sDate.equals(formatter.format(date));
        } catch (Exception e) {
            return false;
        }
    }

  1. Date1、Date2 --> 两个date相差多少小时(向上取整)
public static int diffHours(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return 0;
        }
        long diffMillis = Math.abs(date1.getTime() - date2.getTime());
        double diff = Math.min(Integer.MAX_VALUE, Math.ceil(((double)diffMillis) / (1000 * 60 * 60)));
        return (int)diff;
    }
  1. Date --> Date和当前时间相差多少小时(向上取整)
public static int diffHoursFromNow(Date date) {
        if (date == null) {
            return 0;
        }
        long diffMillis = Math.abs(System.currentTimeMillis() - date.getTime());
        double diff = Math.min(Integer.MAX_VALUE, Math.ceil(((double)diffMillis) / (1000 * 60 * 60)));
        return (int)diff;
    }

image.png

举报

相关推荐

0 条评论