本文实例主要是关于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);}代码涉及时间日期类的使用等内容,具有简单注释,大家可自行参考。
总结
以上就是本文关于Java编程时间日期API实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!