java 常用的时间相关转化
下面代码的一些变量基本解释说明
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 常用的时间相关转化相关推荐
- Java常用类:时间相关类
Java常用类:时间相关类 java.util.Date java.util.Calendar java.time 基本废弃,但有一个方法仍在使用 目前程序中最常用的, 是抽象类 Java 8 推出新 ...
- 第八章笔记 Java常用类
第八章笔记 Java常用类 文章目录 第八章笔记 Java常用类 第一节 Java类库概述 Java类库文档 Java类库列表 第二节 数字相关类 Java数字类 大数字类 随机数类 数字工具类 第三 ...
- Java基础-->一篇讲全Java常用类(详细易懂,建议收藏)
Java基础–>一篇讲全Java常用类(详细易懂,建议收藏) 文章目录 Java基础-->一篇讲全Java常用类(详细易懂,建议收藏) 1.字符串相关的类 String类 概述 创建Str ...
- Java常用spark的pom.xml与读取csv为rdd到最终join操作+java常用pom.xml文件
能进行join的只能是: JavaPairRDD --------------------------------------------------------------------第一种方案-- ...
- JAVA常用的XML解析方法
转并总结自(java xml) JAVA常用的解析xml的方法有四种,分别是DOM,JAX,JDOM,DOM4j xml文件 <?xml version="1.0" enco ...
- Java常用工具类StringUtils的常用方法
Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...
- java apache commons_Apache commons(Java常用工具包)简介
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html Be ...
- Java常用类,这一次帮你总结好!
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 16 分钟. 作者:WenTaoTao 来源:www.cnblogs.com/lwtyyds/p/15678152.html ...
- java常用英语单词
abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotat ...
- 11、java常用单词(转载)
abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotat ...
最新文章
- 【震惊】漱口水居然增加糖尿病,高血压发病率
- android 手机跑分,安兔兔安卓手机跑分性能榜公布:第一名实至名归?
- 表的插入、更新、删除、合并操作_7_通过视图插入
- java库存导出_java生成导出excle文件
- java holder 遍历_复合组件editableValueHolder与Bean验证不一致
- MySQL数据的备份与还原实现步骤
- python package 的两种组织方式
- 【转】Java杂谈(九)--Struts
- Vivado里程序固化详细教程
- 自定义IDM的网页嗅探下载浮条样式
- [MOT学习笔记]JDE损失函数详解
- 2021-2027全球与中国天然眼部卸妆产品市场现状及未来发展趋势
- iqc工作职责和工作内容_iqc组长岗位职责介绍
- 多元回归分析(分类与运用)
- 论文阅读笔记(1):Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation
- 1.31亿月活的爆款游戏,它的后端架构是怎样的?
- [LnOI2019]东京夏日相会
- 《Python笔记》安装(pip)第三方包报错
- Internet Download Manager6.40最高版电脑高速下载工具
- 在找直播平台源码搭建教程?先看看这些吧
热门文章
- java数据库字段中文名称_如何得到数据库中所有表字段及字段中文描述
- 最大子段和问题(3种方法)
- macOS上专业的5款HTML文本代码编辑器
- 《视觉SLAM十四讲》笔记摘抄
- Java的静态数组和动态数组
- MT7621AT,MT7620A,WIFI6,MT7975D+MT7915DAN
- linux防火墙状态centos6一下,CentOS6.5查看防火墙的状态
- 23个平台短视频去水印解析下载接口
- 步进电机正反转实验_三相电机正反转自锁互锁弄清楚,就能轻松接线
- 发现一个记录笔记的方法(康奈尔笔记即5R笔记)