zoukankan      html  css  js  c++  java
  • Java8新特性之一、时间日期API

    package com.effective.common.base.date;
    
    import java.time.Instant;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.Period;
    import java.time.ZoneId;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.ChronoUnit;
    import java.util.Date;
    
    /**
     * 日期工具类
     * @author yanweiqi
     * @since 2016-5-6
     *
     */
    public class LocalDateUtils {
    	
    	private static ZoneId zone = ZoneId.systemDefault();
    	
    	/**
    	 * 字符串转Date
    	 * @param date
    	 * @return
    	 * @throws Exception
    	 */
    	public static Date convertToDate(String date) throws Exception{
    		LocalDate localDate = null;
    		if(null == date){
    			throw new NullPointerException("date isn't null");
    		} else {
    			localDate = LocalDate.parse(date);
                return convertToDate(localDate);
    		}
    	}
    	
    	/**
    	 * 字符串转LocalDateTime
    	 * @param date
    	 * @return localDateTime
    	 */
    	public static LocalDateTime convertToLocalDateTime(String date){
    		LocalDateTime localDateTime = null;
    		if(null == date){
    			throw new NullPointerException("date isn't null");
    		} else {
    			localDateTime = LocalDateTime.parse(date);
                return localDateTime;
    		}
    	}
    	
    	/**
    	 * LocalDate转Date
    	 * @param localDate
    	 * @return Date
    	 */
    	public static Date convertToDate(LocalDate localDate){
    		Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
    		return Date.from(instant);
    	}
    	
    	/**
    	 * LocalDate转Date
    	 * @param localDateTime
    	 * @return Date
    	 */
    	public static Date convertToDate(LocalDateTime localDateTime){
    		Instant instant = localDateTime.atZone(zone).toInstant();
    		return Date.from(instant);
    	}
    	
    	/**
    	 * Date转LocalDate
    	 * @param date
    	 * @return localDate
    	 */
    	public static LocalDate convertToLocalDate(Date date){
    		Instant instant = date.toInstant();
    		return convertToLocalDateTime(instant).toLocalDate();
    	}
    		
    	/**
    	 * Date转LocalTime
    	 * @param date
    	 * @return localDate
    	 */
    	public static LocalTime convertToLocalTime(Date date){
    		Instant instant = date.toInstant();
    		return convertToLocalDateTime(instant).toLocalTime();
    	}
    	
    	/**
    	 * Date转LocalDatetime
    	 * @param date
    	 * @return localDate
    	 */
    	public static LocalDateTime convertToLocalDateTime(Date date){
    		Instant instant = date.toInstant();
    		return convertToLocalDateTime(instant);
    	}
    	
    
    	/**
    	 * Instant转LocalDateTime
    	 * @param instant
    	 * @return
    	 */
    	public static LocalDateTime convertToLocalDateTime(Instant instant){
    		return LocalDateTime.ofInstant(instant, zone);
    	}
    	
    	/**
    	 * LocalDateTime转Instant
    	 * @param localDateTime
    	 * @return
    	 */
    	public static Instant convertToInstant(LocalDateTime localDateTime){
    		return localDateTime.atZone(zone).toInstant();
    	}
    	
    	/**
    	 * LocalDate转Instant
    	 * @param localDate
    	 * @return
    	 */
    	public static Instant convertToInstant(LocalDate localDate){
    		return localDate.atStartOfDay(zone).toInstant();
    	}
    	
    	/**
    	 * LocalDate转LocalDateTime
    	 * @param localDate
    	 * @return LocalDateTime
    	 */
    	public static LocalDateTime convertToLocalDateTime(LocalDate localDate){
    		return localDate.atStartOfDay();
    	}
        
    	/**
    	 * 日周期格式化
    	 * @param localDateTime
    	 * @param formatStyle
    	 * @return
    	 */
    	public static String formatter(LocalDateTime localDateTime, String formatStyle){
    		return DateTimeFormatter.ofPattern(formatStyle).format(localDateTime);
    	}
    	
        /**
         * 设置年
         * @param sourceDate
         * @param year
         * @return LocalDateTime
         */
    	public static LocalDateTime setYear(LocalDateTime sourceDate, Integer year){
    		return sourceDate.withYear(year);
    	}
    	
        /**
         * 设置月
         * @param sourceDate
         * @param month
         * @return LocalDateTime
         */
    	public static LocalDateTime setMonth(LocalDateTime sourceDate, Integer month){
    		return sourceDate.withMonth(month);
    	}
    	
        /**
         * 设置天
         * @param sourceDate
         * @param month
         * @return LocalDateTime
         */
    	public static LocalDateTime setDayOfMonth(LocalDateTime sourceDate, Integer dayOfMonth){
    		return sourceDate.withDayOfMonth(dayOfMonth);
    	}
    	
    	/**
    	 * 设置小时
    	 * @param sourceDate
    	 * @param hour
    	 * @return
    	 */
    	public static LocalDateTime setHour(LocalDateTime sourceDate,Integer hour){
    		return sourceDate.withHour(hour);
    		
    	}
    	
    	/**
    	 * 设置分钟
    	 * @param sourceDate
    	 * @param minute
    	 * @return
    	 */
    	public static LocalDateTime setMinute(LocalDateTime sourceDate,Integer minute){
    		return sourceDate.withMinute(minute);
    	}
    	
    	/**
    	 * 设置秒
    	 * @param sourceDate
    	 * @param second
    	 * @return
    	 */
    	public static LocalDateTime setSecond(LocalDateTime sourceDate,Integer second){
    		return sourceDate.withSecond(second);
    	}
    	
    	/**
    	 * 修改年月日
    	 * @param sourceDate
    	 * @param year
    	 * @param month
    	 * @param dayOfMonth
    	 * @return
    	 */
        public static LocalDateTime setYMD(LocalDateTime sourceDate, Integer year, Integer month, Integer dayOfMonth) {
    		return sourceDate.withYear(year).withMonth(month).withDayOfMonth(dayOfMonth);
        }
        
        /**
         * 修改时分秒
         * @param sourceDate
         * @param hour
         * @param minute
         * @param second
         * @return
         */
        public static LocalDateTime setHMS(LocalDateTime sourceDate,Integer hour, Integer minute, Integer second) {
    		return sourceDate.withHour(hour).withMinute(minute).withSecond(second);
        }
        
        /**
         * 计算相差的天数
         * @param beginDate
         * @param endDate
         * @return
         */
        public static int getInteverDays(LocalDate beginDate,LocalDate endDate){
        	Period period = Period.between(beginDate, endDate);
        	return period.getDays();
        }
        
        /**
         * 日期加减
         * @param  num  数量
         * @param  unit  单位
         * @param  LocalDate 原日期
         * @return LocalDate 增加后的日期
         */
    	@SuppressWarnings("static-access")
    	public static LocalDate addLocalDate(long num,ChronoUnit unit,final LocalDate localDate){
        	LocalDate resultDate;
        	if(num > 0){
        		resultDate = localDate.now().plus(num, unit);
        	} else {
        		resultDate = localDate.now().minus(Math.abs(num), unit);
        	}
        	return resultDate;
        }
        
        /**
         * 日期时分秒加
         * @param  num  数量
         * @param  unit 单位
         * @param  localDateTime 原日期
         * @return LocalDateTime 增加后的日期
         */
        @SuppressWarnings("static-access")
    	public static LocalDateTime addLocalDateTime(long num,ChronoUnit unit,LocalDateTime localDateTime){
        	LocalDateTime resultDateTime;
        	if(num > 0){
        		resultDateTime = localDateTime.now().plus(num, unit);
        	} else {
        		resultDateTime = localDateTime.now().minus(Math.abs(num),unit);
        	}
        	return resultDateTime;
        }
        
        /**
         * 时分秒加减
         * @param  num  数量
         * @param  unit 单位
         * @param  localTime 原日期
         * @return LocalDateTime 增加后的日期
         */
        @SuppressWarnings("static-access")
    	public static LocalTime addLocalTime(long num,ChronoUnit unit,LocalTime localTime){
        	LocalTime resultTime;
        	if(num > 0){
        		resultTime = localTime.now().plus(num, unit);
        	} else {
        		resultTime = localTime.now().minus(Math.abs(num), unit);
        	}
        	return resultTime;
        }
        
        public static void main(String[] args){
        	
        	LocalDateTime time  = LocalDateTime.now();
        	String rr = formatter(time, "yyyy-MM-dd HH:mm:ss");
        	System.out.println(rr);
        	LocalDateTime time2  = addLocalDateTime(-2, ChronoUnit.HOURS, time);
        	String yy = formatter(time2, "yyyy-MM-dd HH:mm:ss");
        	System.out.println(yy);
        }
  • 相关阅读:
    一文带你快速认识“华为3D内容平台”!
    [论文解读] 阿里DIEN整体代码结构
    [论文阅读]阿里DIEN深度兴趣进化网络之总体解读
    [阿里DIN] 从论文源码学习 之 embedding层如何自动更新
    [阿里DIN]从论文源码学习 之 embedding_lookup
    [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构
    [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列
    aspell命令
    买卖股票的最佳时机含手续费
    grep命令
  • 原文地址:https://www.cnblogs.com/ywqbj/p/5645910.html
Copyright © 2011-2022 走看看