java时间工具类记录

java时间工具类记录本章主要是基于java8中的一些时间类,写的一些常用的时间转换、时间计算的方法。public class LocalDateTimeTool {

欢迎大家来到IT世界,在知识的湖畔探索吧!

本章主要是基于java8中的一些时间类,写的一些常用的时间转换、时间计算的方法。比如LocalDateTime,LocalDate,Date等。

在开发的很多时候,经常会遇到一些时间的计算和转换,像多少天后是星期几,两个日期相差天数,时间戳转为Date日期类型等等,每次遇到都需要翻看以往的项目代码查找。故在此做一下简单的记录。

java时间工具类记录

1.LocalDateTime类

public class LocalDateTimeTool {

public static void main(String[] args) {

System.out.println(getCurrentDateTime());

System.out.println(getLocalDateTimeByString(“2022-05-05 15:35:20.222”, FormatPattern.DATE_TIME_FORMAT.getFormat()));

}

/**

* 获取当前日期: yyyy-mm-dd hh:mm:ss.SSS

* @return

*/

public static LocalDateTime getCurrentDateTime() {

return LocalDateTime.now();

}

/**

* 字符串转LocalDate

* @return

*/

public static LocalDateTime getLocalDateTimeByString(String dateString, String format){

if (format == null) {

format = FormatPattern.DATE_TIME_FORMAT.getFormat();

}

return LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(format));

}

/**

* LocalDateTime转Date: 默认格式

* @param date

* @return

*/

public static Date getDateByLocalDateTime(LocalDateTime date){

return Date.from(date.atZone(ZoneId.systemDefault()).toInstant());

}

/**

* Date 转 LocalDateTime

* @param date

* @return

*/

public static LocalDateTime getLocalDateTimeByDate(Date date){

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

}

/**

* 日期时间(LocalDateTime)按指定格式转字符串

*

* @param dateTime

* @param format

* @return

*/

public static String getStringBylocalDateTime(LocalDateTime dateTime, String format) {

String dateString;

if (dateTime == null) {

dateString = “”;

} else {

DateTimeFormatter formatDate = DateTimeFormatter.ofPattern(format);

dateString = dateTime.format(formatDate);

}

return dateString;

}

/**

* Date 相差xxx天的日期

* @param date

* @param value

* @param unit

* @return LocalDateTime

*/

public static LocalDateTime getDifferValueOfDateForLocalDateTime(Date date, Integer value, ChronoUnit unit){

LocalDateTime localDateTime = getLocalDateTimeByDate(date);

return localDateTime.plus(value, unit);

}

/**

* LocalDateTime 转 LocalDate

* @param localDateTime

* @return

*/

public static LocalDate getLocalDateByLocalDateTime (LocalDateTime localDateTime) {

return localDateTime.toLocalDate();

}

}

public enum FormatPattern {

DATE_TIME_FORMAT(“yyyy-MM-dd HH:mm:ss”),

DATETIME_FORMAT(“yyyyMMddHHmmss”),

DATE_FORMAT(“yyyy-MM-dd”),

DATEFORMAT(“yyyyMMdd”),

;

private String format;

private FormatPattern(String format) {

this.format = format;

}

public String getFormat() {

return format;

}

}


2.LocalDateTime类

public class LocalDateTool {

public static void main(String[] args) {

System.out.println(getCurrentDate());

System.out.println(getLocalDateByString(“2015-01-01”));

System.out.println(getDateByLocalDate(LocalDate.now()));

System.out.println(getStartOrEndOfWeek(null, true));

System.out.println(getStartOrEndOfMonth(null, false));

System.out.println(getStartOrEndOfQuarter(null, false));

System.out.println(getStartOrEndOfYear(null, false));

System.out.println(getInstantFromLocalDate(getCurrentDate()));

System.out.println(getDifferValueOfDateForLocalDate(new Date(), -5, ChronoUnitDateEnum.MONTHS));

System.out.println(getDifferValueOfDateForLocalDate(new Date(), -5, ChronoUnitDateEnum.YEARS));

System.out.println(getDifferValueOfDateForLocalDate(new Date(), 14, ChronoUnitDateEnum.DAYS));

}

/**

* 获取当前日期: yyyy-mm-dd

* @return

*/

public static LocalDate getCurrentDate() {

return LocalDate.now();

}

/**

* 字符串转LocalDate

* @return

*/

public static LocalDate getLocalDateByString(String dateString){

return LocalDate.parse(dateString);

}

/**

* LocalDate转Date: 默认格式

* @param date

* @return

*/

public static Date getDateByLocalDate(LocalDate date){

return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());

}

/**

* Date 转 LocalDate

* @param date

* @return

*/

public static LocalDate getLocalDateByDate(Date date){

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

}

/**

* Date 相差xxx天的日期

* @param date

* @param value

* @param unit

* @return LocalDate

*/

public static LocalDate getDifferValueOfDateForLocalDate(Date date, Integer value, ChronoUnitDateEnum unit){

LocalDate localDate = getLocalDateByDate(date);

switch (unit.getUnit()) {

case DAYS:

return localDate.plusDays(value);

case WEEKS:

return localDate.plusWeeks(value);

case MONTHS:

return localDate.plusMonths(value);

case YEARS:

return localDate.plusYears(value);

default:

return localDate;

}

}

/**

* 获取当前周 开始时间和结束时间

* @param date 日期

* @param isFirstDayOfWeek 是否开始

* @return

*/

public static LocalDate getStartOrEndOfWeek(LocalDate date , Boolean isFirstDayOfWeek){

LocalDate now = LocalDate.now();

if (date == null){

date = now;

}

DayOfWeek dayOfWeek = date.getDayOfWeek();

int value = dayOfWeek.getValue();

if (isFirstDayOfWeek){

now = date.minusDays(value – 1);

}else {

now = date.plusDays(7 – value);

}

return now;

}

/**

* 获取当前周 开始时间和结束时间

* @param date 日期

* @param isFirstDayOfMonth 是否开始

* @return

*/

public static LocalDate getStartOrEndOfMonth(LocalDate date , Boolean isFirstDayOfMonth){

LocalDate now = LocalDate.now();

if (date == null){

date = now;

}

if (isFirstDayOfMonth){

now = date.withDayOfMonth(1);

}else {

now = date.with(TemporalAdjusters.lastDayOfMonth());

}

return now;

}

/**

* 获取当前周 开始时间和结束时间

* @param date 日期

* @param isFirstDayOfQuarter 是否开始

* @return

*/

public static LocalDate getStartOrEndOfQuarter(LocalDate date , Boolean isFirstDayOfQuarter) {

LocalDate now = LocalDate.now();

if (date == null){

date = now;

}

Month month = date.getMonth();

Month firstMonthOfQuarter = month.firstMonthOfQuarter();

Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);

if (isFirstDayOfQuarter){

now = LocalDate.of(date.getYear(), firstMonthOfQuarter, 1);

}else {

now = LocalDate.of(date.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(date.isLeapYear()));

}

return now;

}

/**

* 获取当前周 开始时间和结束时间

* @param date 日期

* @param isFirstDayOfYear 是否开始

* @return

*/

public static LocalDate getStartOrEndOfYear(LocalDate date , Boolean isFirstDayOfYear){

LocalDate now = LocalDate.now();

if (date == null){

date = now;

}

if (isFirstDayOfYear){

now = LocalDate.of(date.getYear(), Month.JANUARY, 1);

}else {

now = LocalDate.of(date.getYear(), Month.DECEMBER, Month.DECEMBER.length(date.isLeapYear()));

}

return now;

}

/**

* LocalDate 转换成 Instant时间戳

* @param date

* @return

*/

public static Instant getInstantFromLocalDate(LocalDate date){

return date.atStartOfDay().toInstant(ZoneOffset.UTC);

}

}

public enum ChronoUnitDateEnum {

DAYS(ChronoUnit.DAYS),

WEEKS(ChronoUnit.WEEKS),

MONTHS(ChronoUnit.MONTHS),

YEARS(ChronoUnit.YEARS),

;

private ChronoUnit unit;

private ChronoUnitDateEnum(ChronoUnit unitType) {

this.unit = unitType;

}

public ChronoUnit getUnit() {

return unit;

}

}


3.LocalTime

public class LocalTimeTool {

public static void main(String[] args) {

System.out.println(getCurrentTime());

System.out.println(getLocalTimeByString(“20:15:15.256”));

System.out.println(getDifferValueOfTimeForLocalTime(getCurrentTime(), 50, ChronoUnitTimeEnum.MINUTES));

}

/**

* 获取当前时间: hh:mm:ss.SSS

* @return

*/

public static LocalTime getCurrentTime() {

return LocalTime.now();

}

/**

* 字符串转LocalTime

* @return

*/

public static LocalTime getLocalTimeByString(String dateString){

return LocalTime.parse(dateString);

}

/**

* LocalTime 相差XXX的时间

* @param time

* @param value

* @param unit

* @return

*/

public static LocalTime getDifferValueOfTimeForLocalTime(LocalTime time, Integer value , ChronoUnitTimeEnum unit){

switch (unit.getUnit()) {

case SECONDS:

return time.plusSeconds(value);

case MINUTES:

return time.plusMinutes(value);

case HOURS:

return time.plusHours(value);

default:

return time;

}

}

}

public enum ChronoUnitTimeEnum {

SECONDS(ChronoUnit.SECONDS),

MINUTES(ChronoUnit.MINUTES),

HOURS(ChronoUnit.HOURS),

;

private ChronoUnit unit;

private ChronoUnitTimeEnum(ChronoUnit unitType) {

this.unit = unitType;

}

public ChronoUnit getUnit() {

return unit;

}

}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35923.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信