java时间工具类(java时间类使用场景)

本章主要是基于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){

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;

}

}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 4月 8日 下午1:25
下一篇 2023年 4月 8日 下午1:35

相关推荐

  • 腾讯的小鹅花钱上征信吗,腾讯的小鹅拼拼一年销售额多少

    来源 | Tech星球 文 | 陈桥辉 Tech星球独家获悉,腾讯在近期上线了一款名为“小鹅娱音”的游戏社交APP,据悉,这是集游戏语音助手、即时聊天、开黑交友等功能为一体的游戏社…

    2023年 6月 4日
  • 手机回收站删除的照片还能找回吗

    手机上面隐藏了回收站,你知道吗?打开后,删除多久的照片都能恢复,学会真是太棒了!朋友们大家好,我是小俊,一个专注于知识分享的博主! 那相信许多朋友在使用手机的时候啊,经常都会把手机…

    2024年 1月 9日
  • 支付宝内容隐藏怎么设置

    近日,支付宝APP迎来了 10.3.50 新版更新,iOS 和 安卓 用户均可以升级体验。更新日志显示,该版本主要解决部分已知问题,优化多项细节,体验更流畅等,并没有提示加入新功能…

    2023年 10月 12日
  • 乐视超级手机1pro参数,乐视超级手机1pro

    1乐视超级手机1 Pro评测 主打生态的乐视推出手机产品,毫无疑问让手机厂商多了一种“玩法”。不过,对于用户来讲,无论厂商如何去“玩”,一款好的产品和合适的价格才是选择的基础,至于…

    2023年 3月 20日
  • qq里面删除的照片还能找回来吗

    作为最早的社交软件,QQ陪伴我们度过了最青葱的岁月。 还记得第一个QQ名字第一个QQ好友吗?还记得自己的第一条说说吗?还记得自己的第一张照片吗?大概用两个词就可以概括:非主流、杀马…

    2023年 5月 11日
  • 微信红包也有假别贪小利吃大亏

    日前,微信群里出现“京东集团为回馈社会全民派发购物津贴”的链接,后经各方核实,证实该链接系传播虚假内容。对于类似的“假红包”,人们要提高警惕。 记者从微信团队了解到,诈骗嫌疑人会把…

    数码教程 2023年 7月 26日
  • 手机充电速度突然变慢 看看是不是这四个原因呢

    有时候给手机充电充了好久,可是电量却只有50%,明明之前充电都很快的,但是为什么有时又很慢了呢?那手机充电慢是什么原因呢?下面我们就来好好了解一下吧。 手机充好慢的原因很多,如电压…

    数码教程 2023年 6月 24日
  • 荒野行动 怎么做才更容易吃到鸡呢

    小伙伴们随着吃鸡游戏(绝地求生)的火爆,国内的大厂们也借着热度发行了吃鸡手游,最近热度最高的应该就是网易的荒野行动和小米的小米枪战了,阿诺也是玩了几天游戏体验还不错,今天就来跟大家…

    2023年 3月 21日
  • 如何将手机上的,图片投屏到电视上观看呢

    你是不是还总是因为用手机追剧因为屏幕太小而不爽?看到别人家可以把手机视频APP的视频画面和声音投到电视上而羡慕不已?今天小编来告诉你几个把手机投屏到电视上的小技巧。 如果想把手机投…

    2023年 1月 5日
  • 微信关闭漂流瓶后大家都用什么呢

    11 月 30 日晚,微信官方宣布将暂时下线漂流瓶服务。据公告称,下线的原因是有用户利用漂流瓶发布色情信息。 11 月 30 日晚,微信官方宣布将暂时下线漂流瓶服务。据公告称,下线…

    2023年 9月 29日