项目中经常有对时间进行处理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相关复习。
1.字符串转换为日期
/** * 字符串转换为日期 * @param dateStr 需要转换的日期 * @param dateFormat 日期格式yyyy-MM-dd/yyyy-MM-dd HH:mm:ss */ public static Date toDate(String dateStr, SimpleDateFormat dateFormat) throws ParseException{ Date date = null; try { date = dateFormat.parse(dateStr); } catch (ParseException e) { logger.debug("Fail to convert String to Date, {}", dateStr); } return date; }
2.时间戳转日期
/** * 时间戳转日期 * @param date * @return */ public static String dateToTime(long time, SimpleDateFormat dateFormat) throws ParseException{ String data = null; try { dateFormat.format(new Date(time*1000)); } catch (Exception e) { logger.debug("Fail to convert long to Date, {}", time); } return data; }
3.日期格式化成字符串
/** * 日期格式化成字符串 * @param date * @param dateFormat * @return * @throws ParseException */ public static String toString(Date date, SimpleDateFormat dateFormat) throws ParseException{ return dateFormat.format(date); }
4.获取指定日期之前或之后的日期 ,十分秒为00:00:00
/** * 获取指定日期之前或之后的日期 * @param date * @param num 正数为之后,负数为之前 * @return yyyy-MM-dd 00:00:00 */ public static Date getSpecificDate(Date date, int num){ Calendar todayCal = Calendar.getInstance(); todayCal.setTime(date); Calendar c = Calendar.getInstance(); c.set(todayCal.get(Calendar.YEAR), todayCal.get(Calendar.MONTH), todayCal.get(Calendar.DAY_OF_MONTH) + num, 0, 0, 0); return c.getTime(); }
5.获取指定日期之前或之后的日期 ,时分秒为当前的
/** * 获取指定日期之前或之后的日期 * @param date * @param num 正数为之前,负数为之后 * @return yyyy-MM-dd + 当前的时分秒 */ public static Date getSpecificDateAndHhMmSs(Date date,int num){ Calendar c = Calendar.getInstance(); c.setTime(date); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day - num); return c.getTime(); }
6.将time类型的时间字符串 转换成 时、分
/** * 将time类型的时间字符串 转换成 时、分 * HH-mm-ss -->> HH-mm * @param time * @return */ public static String timeToHHMM(String time){ return time.substring(0, time.length() - 3); }
7.获取某个日期的时、分
/** * 获取某个日期的时、分 * @param date * @return HH-mm */ public static String getHM(Date date){ Calendar ca = Calendar.getInstance(); ca.setTime(date); Integer hour = ca.get(Calendar.HOUR_OF_DAY);//小时 Integer minute = ca.get(Calendar.MINUTE);//分 String rs_hour = hour.toString(); String rs_minute = minute.toString(); if (rs_hour.length() == 1){ rs_hour = "0" + hour; } if(rs_minute.length() == 1){ rs_minute = "0" + minute; } return rs_hour + ":" + rs_minute; }
8.time类型的时间字符串 -->> 零点开始的秒数
/** * time类型的时间字符串 -->> 零点开始的秒数 * @param time HH-mm / HH-mm-ss * @return */ public static Integer timeToSeconds(String time){ String[] timeSplit = null; int hours = 0,minutes = 0,seconds = 0; try { timeSplit = time.split(":"); if (timeSplit.length == 2) { hours = Integer.valueOf(timeSplit[0])*60*60; minutes = Integer.valueOf(timeSplit[1])*60; }else if(timeSplit.length == 3){ hours = Integer.valueOf(timeSplit[0])*60*60; minutes = Integer.valueOf(timeSplit[1])*60; seconds = Integer.valueOf(timeSplit[2]); }else{ logger.debug("Fail to convert the time, {}", time); } } catch (Exception e) { logger.debug("Fail to convert the time, {}", time); throw e; } return hours + minutes + seconds; }
9.零点开始的秒数转时间 -->> HH-mm-ss
/** * 零点开始的秒数转时间 -->> HH-mm-ss * @param durationSeconds * @return */ public static String getDuration(int durationSeconds){ int hours = durationSeconds /(60*60); int leftSeconds = durationSeconds % (60*60); int minutes = leftSeconds / 60; int seconds = leftSeconds % 60; StringBuffer sBuffer = new StringBuffer(); sBuffer.append(addZeroPrefix(hours)); sBuffer.append(":"); sBuffer.append(addZeroPrefix(minutes)); sBuffer.append(":"); sBuffer.append(addZeroPrefix(seconds)); return sBuffer.toString(); } public static String addZeroPrefix(int number){ if(number < 10) return "0"+number; else return ""+number; }
10.比较两个日期相差的秒数
/** * 比较两个日期相差的秒数 * @param startDate * @param endDate * @return */ public static int getTimeSeconds(Date startDate,Date endDate) { long a = endDate.getTime(); long b = startDate.getTime(); return (int)((a - b) / 1000); }
11.判断两个时间段是否存在交集
/** * 比较两个日期相差的秒数 * @param startDate * @param endDate * @return */ public static int getTimeSeconds(Date startDate,Date endDate) { long a = endDate.getTime(); long b = startDate.getTime(); return (int)((a - b) / 1000); }
12.获取指定日期是星期几(1-7分别代表周一至周日)
/** * 获取指定日期是星期几(1-7分别代表周一至周日) * @return */ public static int DayOfWeek(Date date){ Calendar now = Calendar.getInstance(); now.setTime(date); boolean isFirstDay = (now.getFirstDayOfWeek() == Calendar.SUNDAY); int weekday = now.get(Calendar.DAY_OF_WEEK); if(isFirstDay){ weekday = weekday - 1; if(weekday == 0){ weekday = 7; } } return weekday; }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小牛知识库!
本文向大家介绍Java中Calendar时间操作常用方法详解,包括了Java中Calendar时间操作常用方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Calendar时间操作常用方法,具体内容如下 又有哪些坑呐? 坑在哪里: 在我之前接触的一个项目中涉及到这么一项功能:每天00:00:00把某些数据移动到mongodb数据库的另一个集合中,也就是关系型数据库的表中。这个集
本文向大家介绍Java实现链表的常见操作算法详解,包括了Java实现链表的常见操作算法详解的使用技巧和注意事项,需要的朋友参考一下 链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个后继指针,循环链表的尾结点的指针指向头结点. 相比数组而言,链表的插
本文向大家介绍c# Thread类线程常用操作详解,包括了c# Thread类线程常用操作详解的使用技巧和注意事项,需要的朋友参考一下 创建线程 线程是通过扩展 Thread 类创建的。扩展的 Thread 类调用 Start() 方法来开始子线程的执行。 下面的程序演示了这个概念: 当上面的代码被编译和执行时,它会产生下列结果: 管理线程 Thread 类提供了各种管理线程的方法。 下面的实例演
本文向大家介绍java 中JXL操作Excel实例详解,包括了java 中JXL操作Excel实例详解的使用技巧和注意事项,需要的朋友参考一下 JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Ja
本文向大家介绍对django views中 request, response的常用操作详解,包括了对django views中 request, response的常用操作详解的使用技巧和注意事项,需要的朋友参考一下 request 获取post请求中的json数据 json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 r
本文向大家介绍详解Linux终端 MySQL常用操作指令,包括了详解Linux终端 MySQL常用操作指令的使用技巧和注意事项,需要的朋友参考一下 服务: 添加环境变量: 1.数据库指令: 2.进入MySQL表单操作 3.增删改查 新增万能用户 用户名user_1 密码是123456 可以自任何PC上登录这个用户对数据库操作 创建只有在本机才能操作数据库的用户 用户名user_2 密码是12345