时间工具类
好东西大家分享,时间工具类,拿去就能用,直接上干货!
import java.sql.Timestamp; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TimestampTool { /** * 将毫秒转成时间 */ public static String getTimeMillisToDate(long l) { Timestamp d = new Timestamp(l); return d.toString().substring(0, 19); } /** * 当前时间 * * @return Timestamp */ public static Timestamp crunttime() { return new Timestamp(System.currentTimeMillis()); } /** * 获取当前时间的字符串 * * @return String ex:2006-07-07 */ public static String getCurrentDate() { Timestamp d = crunttime(); return d.toString().substring(0, 10); } /** * 获取当前时间的字符串 * * @return String ex:2006-07-07 22:10:10 */ public static String getCurrentDateTime() { Timestamp d = crunttime(); return d.toString().substring(0, 19); } public static String getWeekDay() { Calendar date = Calendar.getInstance(); date.setTime(crunttime()); return new SimpleDateFormat("EEEE").format(date.getTime()); } /** * 获取指定时间的字符串,只到日期 * * @param t * Timestamp * @return String ex:2006-07-07 */ public static String getStrDate(Timestamp t) { return t.toString().substring(0, 10); } /** * 获取指定时间的字符串 * * @param t * Timestamp * @return String ex:2006-07-07 22:10:10 */ public static String getStrDateTime(Timestamp t) { return t.toString().substring(0, 19); } /** * 获得当前日期的前段日期 * * @param days * @return String */ public static String getStrIntervalDate(String days) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -Integer.parseInt(days)); String strBeforeDays = sdf.format(cal.getTime()); return strBeforeDays; } /** * 格式化时间 * * @param dt * String -> yyyy-MM-dd hh:mm:ss * @return java.util.Date.Date -> yyyy-MM-dd hh:mm:ss */ public static Date parseDateTime(String dt) { Date jDt = new Date(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (dt.length() > 10) { jDt = sdf.parse(dt); } } catch (Exception ex) { ex.printStackTrace(); } return jDt; } /** * 格式化时间yyyy-MM-dd HH:mm:ss * * @param date * java.util.Date * @return String -> yyyy-MM-dd HH:mm:ss */ public static String parseDateTime(Date date) { String s = null; if (date != null) { try { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); s = f.format(date); } catch (Exception e) { e.printStackTrace(); } } return s; } /** * 格式化日期 * * @param dt * String -> yyyy-MM-dd * @return java.util.Date.Date -> yyyy-MM-dd */ public static Date parseDate(String dt) { Date jDt = new Date(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (dt.length() >= 8) { jDt = sdf.parse(dt); } } catch (Exception ex) { ex.printStackTrace(); } return jDt; } /** * 格式化时间yyyy-MM-dd * * @param date * java.util.Date * @return String -> yyyy-MM-dd */ public static String parseDate(Date date) { String s = null; try { if (date != null) { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); s = f.format(date); } } catch (Exception e) { e.printStackTrace(); } return s; } /** * * @param dt * @return String */ public static String getLongDateFromShortDate(String dt) { String strDT = dt; try { if (strDT != null && strDT.length() <= 10) { strDT = dt.trim() + " 00:00:00"; } } catch (Exception ex) { ex.printStackTrace(); } return strDT; } /** * * @param dt * @return String */ public static String getShortDateToHHMM(String dt) { String jDt = dt; try { if (jDt != null && jDt.length() <= 10) { jDt = jDt + " 00:00"; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); jDt = sdf.parse(jDt).toLocaleString(); } catch (Exception ex) { ex.printStackTrace(); } return jDt; } /** * * @param dateStr * @return String */ public static String formatDateToHHMM(String dateStr) { String resultDate = null; try { if (dateStr.length() > 10) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:ss"); Date date = sdf.parse(dateStr); resultDate = sdf.format(date); } else resultDate = dateStr; } catch (ParseException e) { e.printStackTrace(); } return resultDate; } /** * 返回日期 格式:2006-07-05 * * @param str * @return Timestamp */ public static Timestamp date(String str) { Timestamp tp = null; if (str.length() <= 10) { String[] string = str.trim().split("-"); int one = Integer.parseInt(string[0]) - 1900; int two = Integer.parseInt(string[1]) - 1; int three = Integer.parseInt(string[2]); tp = new Timestamp(one, two, three, 0, 0, 0, 0); } return tp; } // 获取指定日期之后的日期字符串 如 2007-04-15 后一天 就是 2007-04-16 public static String getNextDay(String strDate, int day) { if (strDate != null && !strDate.equals("")) { Calendar cal1 = Calendar.getInstance(); String[] string = strDate.trim().split("-"); int one = Integer.parseInt(string[0]) - 1900; int two = Integer.parseInt(string[1]) - 1; int three = Integer.parseInt(string[2]); cal1.setTime(new Date(one, two, three)); cal1.add(Calendar.DAY_OF_MONTH, day); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(cal1.getTime()); } else { return null; } } // 获取指定日期之后的日期字符串 如 2007-02-28 后一年 就是 2008-02-29 (含闰年) public static String getNextYear(String strDate, int year) { Calendar cal1 = Calendar.getInstance(); String[] string = strDate.trim().split("-"); int one = Integer.parseInt(string[0]) - 1900; int two = Integer.parseInt(string[1]) - 1; int three = Integer.parseInt(string[2]); cal1.setTime(new Date(one, two, three)); cal1.add(Calendar.YEAR, year); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(cal1.getTime()); } /** * 返回时间和日期 格式:2006-07-05 22:10:10 * * @param str * @return Timestamp */ public static Timestamp datetime(String str) { Timestamp tp = null; if (str != null && str.length() > 10) { String[] string = str.trim().split(" "); String[] date = string[0].split("-"); String[] time = string[1].split(":"); int date1 = Integer.parseInt(date[0]) - 1900; int date2 = Integer.parseInt(date[1]) - 1; int date3 = Integer.parseInt(date[2]); int time1 = Integer.parseInt(time[0]); int time2 = Integer.parseInt(time[1]); int time3 = Integer.parseInt(time[2]); tp = new Timestamp(date1, date2, date3, time1, time2, time3, 0); } return tp; } /** * 返回日期和时间(没有秒) 格式:2006-07-05 22:10 * * @param str * @return Timestamp */ public static Timestamp datetimeHm(String str) { Timestamp tp = null; if (str.length() > 10) { String[] string = str.trim().split(" "); String[] date = string[0].split("-"); String[] time = string[1].split(":"); int date1 = Integer.parseInt(date[0]) - 1900; int date2 = Integer.parseInt(date[1]) - 1; int date3 = Integer.parseInt(date[2]); int time1 = Integer.parseInt(time[0]); int time2 = Integer.parseInt(time[1]); tp = new Timestamp(date1, date2, date3, time1, time2, 0, 0); } return tp; } /** * 获得当前系统日期与本周一相差的天数 * * @return int */ private static int getMondayPlus() { Calendar calendar = Calendar.getInstance(); // 获得今天是一周的第几天,正常顺序是星期日是第一天,星期一是第二天...... int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 星期日是第一天 return (dayOfWeek == 1) ? -6 : 2 - dayOfWeek; } /** * 获得距当前时间所在某星期的周一的日期 例: 0-本周周一日期 -1-上周周一日期 1-下周周一日期 * * @param week * int * @return java.util.Date */ public static Date getMondayOfWeek(int week) { int mondayPlus = getMondayPlus(); // 相距周一的天数差 GregorianCalendar current = new GregorianCalendar(); current.add(GregorianCalendar.DATE, mondayPlus + 7 * week); return current.getTime(); } /** * 获得某日前后的某一天 * * @param date * java.util.Date * @param day * int * @return java.util.Date */ public static Date getDay(Date date, int day) { GregorianCalendar c = new GregorianCalendar(); c.setTime(date); c.add(GregorianCalendar.DATE, day); return c.getTime(); } /** * 获得距当前周的前后某一周的日期 * * @param week * int * @return String[] */ public static String[] getDaysOfWeek(int week) { String[] days = new String[7]; Date monday = getMondayOfWeek(week); // 获得距本周前或后的某周周一 Timestamp t = new Timestamp(monday.getTime()); days[0] = getStrDate(t); for (int i = 1; i < 7; i++) { t = new Timestamp(getDay(monday, i).getTime()); days[i] = getStrDate(t); } return days; } /*** * MCC的UTC时间转换,MCC的UTC不是到毫秒的 * * @param utc * @return java.util.Date */ public static Date mccUTC2Date(long utc) { Date d = new Date(); d.setTime(utc * 1000); // 转成毫秒 return d; } // 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss public static Date strToDateLong(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ParsePosition pos = new ParsePosition(0); Date strtodate = (Date) formatter.parse(strDate, pos); if (strtodate == null) { formatter = new SimpleDateFormat("yyyy-MM-dd"); strtodate = (Date) formatter.parse(strDate, pos); } return strtodate; } // 将 yyyy-MM-dd HH:mm 格式字符串转换为时间 public static Date strToDateTime(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); ParsePosition pos = new ParsePosition(0); Date strtodate = (Date) formatter.parse(strDate, pos); if (strtodate == null) { formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); strtodate = (Date) formatter.parse(strDate, pos); } return strtodate; } // 根据输入的字符串返回日期字符串 2006-07-07 22:10 2006-07-07 public static String getStrDate(String str) { if (str.length() > 10) { String[] string = str.trim().split(" "); return string[0]; } else { return getCurrentDate(); } } // 获取当前时间的字符串 2006-07-07 22:10:10 2006-07-07_221010 public static String getStrDateTime() { Timestamp d = crunttime(); return d.toString().substring(0, 19).replace(":", "").replace(" ", "_"); } // 根据日期字符串,返回今天,昨天或日期 public static String getDayOrDate(String str) { if (str != null && !str.equals("")) { if (getNextDay(str, 0).equals(getCurrentDate())) { str = "今天"; } else if (getNextDay(str, 1).equals(getCurrentDate())) { str = "昨天"; } } return str; } // 返回当前日期所在星期,2对应星期一 public static int getMonOfWeek() { Calendar cal1 = Calendar.getInstance(); cal1.setTime(new Date()); return cal1.get(Calendar.DAY_OF_WEEK); } public static void main(String[] args) { System.out.println(System.currentTimeMillis()); } /** * 获取当前日期之前的日期字符串 如 2007-04-15 前5月 就是 2006-11-15 */ public static String getPreviousMonth(int month) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(new Date()); cal1.add(Calendar.MONTH, -month); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(cal1.getTime()); } public static String getStrYear(int year) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(new Date()); cal1.add(Calendar.YEAR, -year); SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); return formatter.format(cal1.getTime()) + "年份"; } /** * 比较两个日期前后 可以大于或等于 * * @param starDate * @param endDate * @return */ public static boolean compareTwoDays(String starDate, String endDate) { Calendar cal_start = Calendar.getInstance(); Calendar cal_end = Calendar.getInstance(); cal_start.setTime(parseDate(starDate)); cal_end.setTime(parseDate(endDate)); return cal_end.after(cal_start); } public static int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) { if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int days = d2.get(java.util.Calendar.DAY_OF_YEAR) - d1.get(java.util.Calendar.DAY_OF_YEAR); int y2 = d2.get(java.util.Calendar.YEAR); if (d1.get(java.util.Calendar.YEAR) != y2) { d1 = (java.util.Calendar) d1.clone(); do { days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR); d1.add(java.util.Calendar.YEAR, 1); } while (d1.get(java.util.Calendar.YEAR) != y2); } return days; } // 得到两个日期之间的年 public static int dateDiffYear(String starDate, String endDate) { int result = 0; Calendar d1 = Calendar.getInstance(); Calendar d2 = Calendar.getInstance(); d1.setTime(parseDate(starDate)); d2.setTime(parseDate(endDate)); // 日期大小翻转 if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int yy = d2.get(Calendar.YEAR) - d1.get(Calendar.YEAR); int mm = d2.get(Calendar.MONTH) - d1.get(Calendar.MONTH); if (mm < 0) { result = yy - 1; } if (mm > 0) { result = yy; } if (mm == 0) { if ((d2.getTimeInMillis() - d1.getTimeInMillis()) >= 0) { result = yy; } else { result = yy - 1; } } return result; } // 获取年龄 public static int getAgeByBirth(String starDate) { return dateDiffYear(starDate, getCurrentDate()); } }
相关推荐
基于Java语言编写的Spring Boot时间工具类方法封装,主要方法如下:根据日期获取该日期内24小时的整点时刻、获取当月的 天数、根据 年、月 获取对应的月份 的 天数、根据指定日期得获取对应月份的所有日期的每日结束...
java日期时间工具类超级全。其中包含:获得当前日期 yyyy-MM-dd HH:mm:ss;获取系统当前时间戳;获取当前日期 yy-MM-dd;得到两个时间差 格式yyyy-MM-dd HH:mm:ss;转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的...
封装好的时间工具类, 包括时间格式转换,获取今天周几,一月几天。
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
Java操作时间工具类是开发者日常工作中经常会用到的模块,特别是在处理日期和时间相关的业务逻辑时。本工具类主要是为了方便地对日期和时间进行格式化、比较、计算等操作,提高开发效率。下面我们将详细探讨Java中...
Java时间工具类是Java开发中不可或缺的一部分,它们提供了一系列方便的方法来处理日期和时间,使得开发者可以更加高效地进行时间相关的操作。在这个简单的DateUtil.java工具类中,我们可以期待找到一些基本但实用的...
java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等
java 时间 datatime 工具类
java 时间工具类 java 时间工具类java 时间工具类java 时间工具类java 时间工具类 java 时间工具类java 时间工具类java 时间工具类java 时间工具类 java 时间工具类java 时间工具类java 时间工具类java 时间工具类 ...
`JFDate` 类库正是一个针对iOS平台的高效、全面的时间工具类,它由一位有多年项目经验的开发者精心封装,旨在简化时间相关的操作,满足大部分开发者在实际工作中遇到的需求。 `JFDate` 针对`NSDate`进行了扩展,...
Java对时间进行操作的工具类,包括各种时间格式转化的方法以及一些时间比较登方法。
在Java编程语言中,处理日期和...总之,一个良好的日期时间工具类应该简化日期时间的常见操作,提高代码的可读性和可维护性。在Java 8及更高版本中,可以考虑利用`java.time`包提供的新特性来进一步优化工具类的设计。
java 时间工具类 java 时间工具类java 时间工具类 java 时间工具类java 时间工具类 java 时间工具类java 时间工具类 java 时间工具类java 时间工具类 java 时间工具类
各种日期格式,时间戳,时间计算的相互转换。直接引入工程中,可使用
JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...
在Java编程语言中,时间工具类是用于处理日期和时间操作的重要工具,它们极大地简化了开发者对日期和时间的操作。本篇文章将详细讲解基于提供的"时间工具类 DateUtils"的知识点,包括DateUtils的主要功能、如何使用...
在给定的"UTC.zip_UTC long_时间工具类"压缩包中,包含了一个名为"UTC.java"的文件,它很可能是一个自定义的时间工具类,用于处理UTC时间和不同数据类型之间的转换。 这个"UTC.java"文件可能提供了以下几种功能: ...
"格式化时间工具类"通常是指一个自定义的类,它封装了Java的日期时间处理方法,以便更方便地进行日期格式化、解析和比较。在这个场景下,`TimeFormatUtil.java`文件很可能就是这样一个工具类。 Java标准库中提供了`...