下面代码的一些变量基本解释说明
datePattern:时间对应的字符串格式
date: 时间
dateStr:字符串格式的时间
指定的几个常量:

public static final long DAYTIMESTAMP = 24 * 60 * 60 * 1000L;
public static final  String SHORTDATEFORMATER = "yyyy-MM-dd";
public static final  String LONGDATEFORMATER = "yyyy-MM-dd HH:mm:ss";

1.时间转化为指定格式的字符串

public static final String convertDateToString(String datePattern, Date date) {String returnValue = null;if (date != null) {SimpleDateFormat df = new SimpleDateFormat(datePattern);returnValue = df.format(date);}return (returnValue);}

2.指定格式的字符串转时间

public static final Date convertStringToDate(String datePattern,String dateStr) {if( StringUtils.isBlank(dateStr) ){return null;}SimpleDateFormat df = null;Date date = null;df = new SimpleDateFormat(datePattern);try {date = df.parse(dateStr);} catch (ParseException pe) {log.error("异常![{}]",pe);return null;}return (date);}

3.判断日期是否未过期

public static final boolean isNonExpired(Date date){Calendar calendarNow = Calendar.getInstance();calendarNow.setTime(calendarNow.getTime());Calendar calendarGiven = Calendar.getInstance();calendarGiven.setTime(date);return calendarNow.before(calendarGiven);}

4.判断日期是否过期

public static final boolean isExpired(Date date){Calendar calendarNow = Calendar.getInstance();calendarNow.setTime(calendarNow.getTime());Calendar calendarGiven = Calendar.getInstance();calendarGiven.setTime(date);return calendarNow.after(calendarGiven);}

5.判断两个日期大小

public static final int compare( Date firstDate,Date secondDate ){return firstDate.compareTo(secondDate);}

备注:如果第一个日期参数大于第二个日期返回 1;如果两个日期相等返回0;如果第一个日期小于第二个日期 返回-1

6.获取指定时间前n个月的时间

public static Date DateMinus(Date date,int month){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, -month);return calendar.getTime();}

7.获取指定日期之前指定天,包含传入的那一天

public static String getDaysBefore(Date date, int days) {Date td = new Date(date.getTime() - DAYTIMESTAMP * days);return DateUtils.convertDateToString(SHORTDATEFORMATER, td);}

8.获取指定日期之前指定天的数组,包含传入的那一天

public static List<String> getDaysBeforeArray(Date date, int days){List<String> resultList = new ArrayList<>();for (int i = days-1; i >= 0; i--) {resultList.add(getDaysBefore(date, i));}return resultList;}

备注:配合第七条使用

9.获取指定时间的0点

public static Date getDayStartTimeByDate(Date date){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);return calendar.getTime();}

10.获取指定日期的最后一秒

public static Date getDayEndOfDay(Date date){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);return calendar.getTime();}

11.获取当时时间前一个小时时间

public static Date getDayBeforeHour(){Calendar calendar = Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);return calendar.getTime();}

12.获取两个时间之间相差的分钟数

public static String getdifferMinute(Date endDate, Date nowDate){long nm = 1000 * 60;// 获得两个时间的毫秒时间差异long diff = endDate.getTime() - nowDate.getTime();return String.valueOf(diff/nm);}

备注:endDate 相对大的时间;nowDate 相对小的时间;可以在入参的时候就判断好,或者可以在方法内优化,即调用第五条操作根据返回值进行操作就可以。

13.获取两个时间之间间隔多少天

public static int differentDaysByMillisecond(Date date1,Date date2){return (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));}

14.获取两个时间之间的日期集合

public static List<Date> getDatesBetweenTwoDate(Date beginDate, Date endDate ) {List<Date> dates = new ArrayList<>();try{dates.add(beginDate);// 把开始时间加入集合Calendar cal = Calendar.getInstance();// 使用给定的 Date 设置此 Calendar 的时间cal.setTime(beginDate);while (true) {// 根据日历的规则,为给定的日历字段添加或减去指定的时间量cal.add(Calendar.DAY_OF_MONTH, 1);// 测试此日期是否在指定日期之后if (endDate.after(cal.getTime())) {dates.add(cal.getTime());} else {break;}}dates.add(endDate);// 把结束时间加入集合}catch(Exception e){log.error("获取时间集合异常");}return dates;}

15.获取当月月初第一天

public static String getMonthFirstDay() {SimpleDateFormat format = new SimpleDateFormat(SHORTDATEFORMATER);Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天return format.format(c.getTime());}

16.时间戳格式化

public static String parseDate(Long timeStamp){String resDate = "";if(null != timeStamp){Date date = new Date(timeStamp);SimpleDateFormat smf = new SimpleDateFormat(LONGDATEFORMATER);resDate= smf.format(date);}return resDate;}

17.获取今天是当前年第n周

public static int getWeekOfYear(String dateStr,int startCalendar){SimpleDateFormat format = new SimpleDateFormat(SHORTDATEFORMATER);Calendar calendar = Calendar.getInstance();try {Date date = format.parse(dateStr);calendar.setFirstDayOfWeek(startCalendar);calendar.setTime(date);}catch (Exception error) {error.printStackTrace();}return calendar.get(Calendar.WEEK_OF_YEAR);}

备注:startCalendar是指从周几作为本周的开始周期 例:以周五作为一周的开始则startCalendar传值为Calendar.FRIDAY

总结:目前常用到的时间相关的操作大概就是这些,其中一些没有覆盖到的可以通过上面相关操作调整就能得到,如有遗漏请在评论中补充,我及时调整增加。

java 常用的时间相关转化相关推荐

  1. Java常用类:时间相关类

    Java常用类:时间相关类 java.util.Date java.util.Calendar java.time 基本废弃,但有一个方法仍在使用 目前程序中最常用的, 是抽象类 Java 8 推出新 ...

  2. 第八章笔记 Java常用类

    第八章笔记 Java常用类 文章目录 第八章笔记 Java常用类 第一节 Java类库概述 Java类库文档 Java类库列表 第二节 数字相关类 Java数字类 大数字类 随机数类 数字工具类 第三 ...

  3. Java基础-->一篇讲全Java常用类(详细易懂,建议收藏)

    Java基础–>一篇讲全Java常用类(详细易懂,建议收藏) 文章目录 Java基础-->一篇讲全Java常用类(详细易懂,建议收藏) 1.字符串相关的类 String类 概述 创建Str ...

  4. Java常用spark的pom.xml与读取csv为rdd到最终join操作+java常用pom.xml文件

    能进行join的只能是: JavaPairRDD --------------------------------------------------------------------第一种方案-- ...

  5. JAVA常用的XML解析方法

    转并总结自(java xml) JAVA常用的解析xml的方法有四种,分别是DOM,JAX,JDOM,DOM4j xml文件 <?xml version="1.0" enco ...

  6. Java常用工具类StringUtils的常用方法

    Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...

  7. java apache commons_Apache commons(Java常用工具包)简介

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html Be ...

  8. Java常用类,这一次帮你总结好!

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 16 分钟. 作者:WenTaoTao 来源:www.cnblogs.com/lwtyyds/p/15678152.html ...

  9. java常用英语单词

    abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotat ...

  10. 11、java常用单词(转载)

    abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotat ...

最新文章

  1. 【震惊】漱口水居然增加糖尿病,高血压发病率
  2. android 手机跑分,安兔兔安卓手机跑分性能榜公布:第一名实至名归?
  3. 表的插入、更新、删除、合并操作_7_通过视图插入
  4. java库存导出_java生成导出excle文件
  5. java holder 遍历_复合组件editableValueHolder与Bean验证不一致
  6. MySQL数据的备份与还原实现步骤
  7. python package 的两种组织方式
  8. 【转】Java杂谈(九)--Struts
  9. Vivado里程序固化详细教程
  10. 自定义IDM的网页嗅探下载浮条样式
  11. [MOT学习笔记]JDE损失函数详解
  12. 2021-2027全球与中国天然眼部卸妆产品市场现状及未来发展趋势
  13. iqc工作职责和工作内容_iqc组长岗位职责介绍
  14. 多元回归分析(分类与运用)
  15. 论文阅读笔记(1):Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation
  16. 1.31亿月活的爆款游戏,它的后端架构是怎样的?
  17. [LnOI2019]东京夏日相会
  18. 《Python笔记》安装(pip)第三方包报错
  19. Internet Download Manager6.40最高版电脑高速下载工具
  20. 在找直播平台源码搭建教程?先看看这些吧

热门文章

  1. java数据库字段中文名称_如何得到数据库中所有表字段及字段中文描述
  2. 最大子段和问题(3种方法)
  3. macOS上专业的5款HTML文本代码编辑器
  4. 《视觉SLAM十四讲》笔记摘抄
  5. Java的静态数组和动态数组
  6. MT7621AT,MT7620A,WIFI6,MT7975D+MT7915DAN
  7. linux防火墙状态centos6一下,CentOS6.5查看防火墙的状态
  8. 23个平台短视频去水印解析下载接口
  9. 步进电机正反转实验_三相电机正反转自锁互锁弄清楚,就能轻松接线
  10. 发现一个记录笔记的方法(康奈尔笔记即5R笔记)