范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java时间工具类记录

  本章主要是基于java8中的一些时间类,写的一些常用的时间转换、时间计算的方法。比如LocalDateTime,LocalDate,Date等。
  在开发的很多时候,经常会遇到一些时间的计算和转换,像多少天后是星期几,两个日期相差天数,时间戳转为Date日期类型等等,每次遇到都需要翻看以往的项目代码查找。故在此做一下简单的记录。
  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;
  }
  }

盼了一年徐梦桃收到第六个世界杯年度总排名冠军奖杯在期盼了一年之久,徐梦桃终于收到了自己心心念念的第六个世界杯年度总排名冠军奖杯。2022年3月14日,国际雪联宣布,中国自由式滑雪空中技巧奥运冠军徐梦桃,获得世界杯年度总排名冠军。安全性远超燃油车!特斯拉调查报告是美国平均水平7。4倍一直以来,关于电动车和燃油车哪个更安全的争议甚嚣尘上。3月21日,特斯拉官方发布了新一季安全报告,根据官方的统计,在2022年第四季度,特斯拉Autopilot自动辅助驾驶让行车安高同学笔记HiPhiZ之动态续航,让续航显示更加精准续航里程显示的准确性,一直是新能源车主津津乐道的话题。许多电车都出现过跑10公里,掉20公里甚至更多续航里程的情况,这让近在咫尺的服务区变得遥不可及,惬意的自驾出行直接变身人在囧途连续三年净利润下滑后,招商蛇口能完成三年未变的3300亿销售目标吗?3月21日下午,招商蛇口(001979。SZ)召开2022年度业绩发布会暨投资者交流会。前一天,其2022年年度报告也已发布。年报显示,2022年,公司营业收入1830。03亿元,识别那些吃出来的抑郁和焦虑你知道吗,抑郁和焦虑情绪的发生与饮食有微妙的联系。它们与神经递质的产生密切相关,而神经递质的产生需要足够的营养物质支持,包括氨基酸(色氨酸酪氨酸和谷氨酰胺)矿物质(锌铜铁和镁)和B不屈的灵魂迸发精彩人生!今天2130山东卫视乡约播出向上的力量专辑乡村振兴,乡约同行。今天节目的嘉宾,他们可以在人生的每一次考验中保持不服输的态度,可以在先天没有优势的情况下向命运发起挑战,他们展现出来向上的力量,就是坚信脚下有路,心中有光!今天山东荣成黑尾鸥之乡鸥鸟归在山东省荣成市海驴岛附近海域,大量黑尾鸥在海面上嬉戏觅食盘旋,场面壮观。杜晓莹摄山东荣成是中国黑尾鸥之乡。杜晓莹摄每年3月上旬至8月中旬,上万只黑尾鸥来到海驴岛筑巢产卵繁衍生息。杜山东泰山这几年的怪相自从山东泰山更换股东,由济南文旅集团接替山东鲁能集团后,球队不断爆出猛料,下面就来盘点一下1舒畅与郝伟撕破脸皮2022年5月,原山东泰山领队舒畅突然在队内爆料郝伟三重罪首先是以权谋医保主动毁约成定局?人民日报重磅发声,个人账户的钱属于谁?点击上方蓝色声音按钮,可同步收听全文精彩内容,三农讲座谢谢大家的关注。医疗保险与我们的生活息息相关现在受环境等多重因素的影响,很多年轻人生病的几率也明显增加。有了医疗保险,你看病的胡建波打破名校崇拜欧亚男篮夺冠启示录欧亚男篮夺冠颁奖合影2023年3月18日晚上,西工大翱翔体育馆中,篮球裁判吹响了比赛结束的哨声,分数定格在6746,欧亚男篮战胜了石油大学男篮,首次荣获陕西省大学生篮球联赛暨CUB50岁的女人,这才是你该有的早春穿搭风衣阔腿裤,高级有气场年年换新衣,年年都有全新的花样,提及到高级的穿衣法则,你脑海当中最先会联想起什么?过了50岁的女人,会适当的放下一些对着装华丽感的追求,运用历久弥新的简约感,对应合适的服装设计元素
美国武装日本,攻击无人机部署日本,冲到第一线,解放军不会纵容日本海上自卫队从10月份开始了MQ9B海空卫士无人机的部署,MQ9B是在MQ9死神无人机的基础上改进的型号,是美国通用原子公司力推的产品,目前有多个国家地区对于QM9B非常有兴趣,抗美援朝72周年这些数字我们要记住青山埋忠骨,山河念英魂!2022年10月25日是抗美援朝出国作战72周年纪念日,72年前的今天中国人民志愿军打响了入朝后的第一次战役,拉开了伟大的抗美援朝战争的帷幕,有人说那是新中印媒印度为一网公司发射36颗卫星据印度斯坦时报网站10月23日报道,印度空间研究组织最重的火箭LVM3M2当天从斯里赫里戈达岛的航天港发射,为一家英国客户将36颗通信卫星送入近地轨道。报道称,此前,印度新航天公司萌娃睡太久被家长强制开机起来也是一脸懵逼近日,上海一位萌娃被音乐强制开机的视频走红网络,萌翻了众多网友。据家长称,当时孩子睡得有点久,就放了一首欢快的甩葱歌,想唤醒孩子。没想到孩子真的醒了,懵懵懂懂地坐起来就开始跟着点头孩子上小学了,还是不敢自己睡,咋办?试试这两招,当晚就见效跟孩子分房睡,到底有多难?听听这位宝妈的故事我家娃如今6岁了,还没有分房成功。一开始我让他自己睡一个房间,他说不敢,怕鬼。后来,他又说自己怕幽灵,还是赖在我们屋里不走。好不容易说服为人父母没能控制住自己的情绪,第一次当父母不是好的理由什么时候开始我们变得焦躁不安,爱发脾气了,孩子是上天赐予我们的小天使,小的时候那么乖巧,肉嘟嘟的小脸,咯咯的笑声,你还记得吗?孩子第一次叫妈妈,我们多么的欣喜若狂随着孩子会翻身,会7个月孩子吃蛋黄过敏导致呼吸急促,昏迷!医生辅食加蛋有讲究文菁妈01hr汉阳赵女士在6个月的时候给孩子添加辅食就直接加了蛋黄,结果孩子吃了蛋黄之后就长疹子了。而过了一个月之后她就觉得还是要给孩子吃蛋黄,毕竟孩子吃鸡蛋黄能够补铁,而且还能够全国最美退役军人李文强愿做一朵炽热的焊花李文强进行焊接作业。作者供图41岁的李文强,从事过两项水火不容的工作。2001年,20岁的李文强从家乡甘肃应征入伍,成为原武警北京消防总队一名消防战士。在部队服役的几年里,他紧握手苹果又一首席设计师将离职!任职仅三年,因挤牙膏式创新遭批10月24日消息,一则苹果又一首席设计师将离职的消息冲上热搜。报道称,苹果公司硬件首席设计师EvansHankey将于2023年离开公司。目前,她的继任者还未被提名。苹果公司发言人罗永浩天猫直播首秀!双11清单公布想买iPhone者蹲一年一度的双11电商节大促将于今晚8点正式开启,首次入驻天猫直播的新主播罗永浩也准备开始营业了。10月24日,交个朋友直播间官方公布了罗永浩天猫双11带货清单。另外,今晚将是罗永浩到底是中规中矩还是内卷之王?试听节奏音频变奏曲V6国庆长假前最后一个工作日,我拿到了TempoTec节奏音频送来的一款新品Variations6变奏曲V6便携播放器(以下简称节奏变奏曲V6)。由于这款机型还没有正式开始在国内销售,