详解 JAVA 常用的时间操作实用
这里有新鲜出炉的 Java 设计模式, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
本文主要介绍了 JAVA 一些常用的时间操作, 很实用, 相信大家在开发项目时会用到, 下面就跟小编一起来看下吧
项目中经常有对时间进行处理的需求, 下面是一些常用的操作整理, 方便以后再次使用以及做相关复习
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;
- }
来源: http://www.phperz.com/article/18/0209/359224.html