Java编程时间日期API实例解析

 更新时间:2018年01月10日 08:45:37   作者:yanweiqi  
本文主要介绍了Java编程时间日期API实例解析的相关内容,分享了一则实例,具有一定借鉴价值,需要的朋友可以参考下。

本文实例主要是关于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实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • java基础学习JVM中GC的算法

    java基础学习JVM中GC的算法

    这篇文章主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。
    2017-11-11
  • JAVA的Random类的用法详解

    JAVA的Random类的用法详解

    Random类主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家。
    2016-04-04
  • Java Junit单元测试实例详解

    Java Junit单元测试实例详解

    在本篇文章里小编给大家分享的是关于Java Junit单元测试的相关知识点内容,有兴趣的朋友们学习下。
    2019-11-11
  • Mac Maven环境搭建安装和配置超详细步骤

    Mac Maven环境搭建安装和配置超详细步骤

    这篇文章主要给大家介绍了关于Mac Maven环境搭建安装和配置的超详细步骤,Maven是一种常用的Java构建工具,它可以自动化构建、测试和打包Java项目,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 基于Class.forName()用法及说明

    基于Class.forName()用法及说明

    这篇文章主要介绍了基于Class.forName()用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Spring高级注解之@DependsOn详解

    Spring高级注解之@DependsOn详解

    这篇文章主要介绍了Spring高级注解之@DependsOn详解,@DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中,需要的朋友可以参考下
    2024-01-01
  • JUC中的wait与notify方法实现原理详解

    JUC中的wait与notify方法实现原理详解

    这篇文章主要介绍了JUC中的wait与notify方法实现原理,在进行wait()之前,就代表着需要争夺Synchorized,而Synchronized代码块通过javap生成的字节码中包含monitor enter和monitor exit两个指令
    2023-03-03
  • SpringBoot 使用hibernate validator校验

    SpringBoot 使用hibernate validator校验

    这篇文章主要介绍了SpringBoot 使用hibernate validator校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Spring boot怎么整合Mybatis

    Spring boot怎么整合Mybatis

    spring boot的简配置方便的开发,下面通过本文给大家分享Spring boot整合Mybatis的方法,需要的朋友参考下
    2017-07-07
  • @Validated验证List集合的方法示例

    @Validated验证List集合的方法示例

    这篇文章主要介绍了@Validated验证List集合的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论