java日期时间操作工具类
程序员文章站
2024-03-02 15:29:22
本文实例为大家分享了java日期时间操作工具类,供大家参考,具体内容如下
虽然jdk1.8开始,加入了time包,里面对时区,本地化时间,格式化,以及时间等做了很好的封装...
本文实例为大家分享了java日期时间操作工具类,供大家参考,具体内容如下
虽然jdk1.8开始,加入了time包,里面对时区,本地化时间,格式化,以及时间等做了很好的封装,但仍然要写一个工具类。大家看着用。应该没有bug。如果发现了,请您一定告知,互相学习!好了,上代码:
package com.wdy.tools.utils.timeutil; import java.text.dateformat; import java.text.simpledateformat; import java.util.calendar; import java.util.date; import java.util.gregoriancalendar; /** * timeutil 日期时间工具类 * @author wangdy */ public class timeutil { /** * 获取当前系统时间的小时(hh) * * @return int 当前系统小时hh格式 * @throws exception */ public static int gethh() throws exception { dateformat df = new simpledateformat("hh"); date date = new date(system.currenttimemillis()); string str = df.format(date); return integer.parseint(str); } /** * 获取当前系统时间的分钟数(mm) * * @return int 当前系统分钟mm格式 * @throws exception */ public static int getmm() throws exception { dateformat df = new simpledateformat("mm"); date date = new date(system.currenttimemillis()); string str = df.format(date); // return integer.parseint(str.split(":")[0]) * 4 + // integer.parseint(str.split(":")[1]) / 15; return integer.parseint(str); } /** * 获取当前系统时间的秒数(ss) * * @return int 当前系统时间的秒数(ss) * @throws exception */ public static int getss() throws exception { dateformat df = new simpledateformat("ss"); date date = new date(system.currenttimemillis()); string str = df.format(date); // return integer.parseint(str.split(":")[0]) * 4 + // integer.parseint(str.split(":")[1]) / 15; return integer.parseint(str); } /** * 获取输入日期的前后日期 * * @param date * 基准日期 yyyy-mm-dd * @param daymark * +代表往后,-代表往前 * @return string 前后日期(yyyy-mm-dd) * @throws exception */ public static string getotherday(string date, int daymark) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.day_of_month, daymark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在周的第一天(周一) * * @param date基准日期yyyy * -mm-dd * @return string 周一(yyyy-mm-dd) * @throws exception * * */ public static string getweekfirstdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int days = c.get(calendar.day_of_week); string strstart = ""; if (days == 1) { strstart = getotherday(date, -days - 5); } else { strstart = getotherday(date, -days + 2); } return strstart; } /** * 获取日期所在周的最后一天(周日) * * @param date基准日期yyyy * -mm-dd * @return string(yyyy-mm-dd) * @throws exception * * */ public static string getweeklastdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int days = c.get(calendar.day_of_week); string strstart = ""; if (days == 1) { strstart = getotherday(date, 0); } else { strstart = getotherday(date, 8 - days); } return strstart; } /** * 获取日期所在周(年的周数)的前后周的周一 * * @param date基准日期yyyy * -mm-dd * @param weekmark找基准日期 * +代表往后,-代表往前 * @return string 前后周的周一(yyyy-mm-dd) * @throws exception * * */ public static string getotherweekfirstdate(string date, int weekmark) throws exception { string firstdate = getweekfirstdate(date); dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(firstdate); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.week_of_year, weekmark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在季的第一天 * * @param date基准日期yyyy * -mm-dd * @return string * @throws exception * * */ public static string getseasonfirstdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int year = c.get(calendar.year); int month = c.get(calendar.month); if (month < 3) { month = 0; } else if (month >= 3 && month < 6) { month = 3; } else if (month >= 6 && month < 9) { month = 6; } else if (month >= 9 && month < 12) { month = 9; } c.set(year, month, 1); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在季的前后季度的第一天(xxxx-xx-01) * * @param date * 基准日期yyyy-mm-dd * @param seasonmark * 找基准日期+代表往后,-代表往前 * @return string * @throws exception * * */ public static string getotherseasonfirstdate(string date, int seasonmark) throws exception { string firstdate = getseasonfirstdate(date); dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(firstdate); calendar c = calendar.getinstance(); c.settime(dt); int month = seasonmark * 3; if (month != 0) { c.add(calendar.month, month); } string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在月的第一天 date基准日期 * * @param date * yyyy-mm-dd * @return string (yyyy-mm) * @throws exception * * */ public static string getmonthfirstdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int year = c.get(calendar.year); int month = c.get(calendar.month); c.set(year, month, 1); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在月的最后一天 * * @param date基准日期yyyy * -mm-dd * @return string yyyy-mm-dd * @throws exception * * */ public static string getmonthlastdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int year = c.get(calendar.year); int month = c.get(calendar.month); int daynum = c.getactualmaximum(calendar.day_of_month); c.set(year, month, daynum); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在月的前后月份的第一天(yyyy-mm-01) * * @param date基准日期yyyy * -mm-dd * @param monthmark找基准日期 * +代表往后,-代表往前 * @return string * @throws exception * * */ public static string getothermonthfirstdate(string date, int monthmark) throws exception { string firstdate = getmonthfirstdate(date); dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(firstdate); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.month, monthmark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在年的第一天 * * @param date基准日期yyyy * -mm-dd * @return string * @throws exception * * */ public static string getyearfirstdate(string date) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); int year = c.get(calendar.year); c.set(year, 0, 1); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 10); return strstart; } /** * 获取日期所在年的前后年的第一天(yyyy-01-01) * * @param date * 基准日期yyyy-mm-dd * @param monthmark * 找基准日期+代表往后,-代表往前 * @return string * @throws exception * * */ public static string getotheryearfirstdate(string date, int yearmark) throws exception { string firstdate = getmonthfirstdate(date); dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(firstdate); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.year, yearmark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime.substring(0, 4); return strstart + "-01-01"; } /** * 取得同期日期 年同期 * * @param date * yyyy-mm-dd * @param year * 年份 * @return 年同期日期yyyy-mm-dd * @throws exception */ public static string getyeartqday(string date, int year) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.year, year); string mdatetime = df.format(c.gettime()); return mdatetime; } /** * 取得同期日期 月同期 * * @param date * yyyy-mm-dd * @param month * 月份 * @return 月同期日期yyyy-mm-dd * @throws exception */ public static string getmonthtqday(string date, int month) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.month, month); string mdatetime = df.format(c.gettime()); return mdatetime; } /** * 取得同比月份 * * @param month * 月份 * @return 同比月份 * @throws exception */ public static string gettbmonth(string month) throws exception { dateformat df = new simpledateformat("yyyy-mm"); date dt = df.parse(month); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.year, -1); string mdatetime = df.format(c.gettime()); return mdatetime; } /** * 取得环比月份 * * @param month * 月份 * @return 环比月份 * @throws exception */ public static string gethbmonth(string month) throws exception { dateformat df = new simpledateformat("yyyy-mm"); date dt = df.parse(month); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.month, -1); string mdatetime = df.format(c.gettime()); return mdatetime; } /** * 获取两个日期之间的天数 * * @param sdate * -- 起始日期yyyy-mm-dd * @param edate * -- 结束日期yyyy-mm-dd * @return int--天数 * @throws exception * */ public static int getdaysoftwodate(string sdate, string edate) throws exception { dateformat df1 = new simpledateformat("yyyy-mm-dd"); dateformat df2 = new simpledateformat("yyyy-mm-dd"); date date1 = df1.parse(sdate); date date2 = df2.parse(edate); if (null == date1 || null == date2) { return -1; } long intervalmilli = date2.gettime() - date1.gettime(); return (int) (intervalmilli / (24 * 60 * 60 * 1000)); } /** * 获取两个月份之间的月数 * * @param sdate * -- 起始月yyyy-mm * @param edate * -- 结束月yyyy-mm * @return int--天数 * @throws exception * */ public static int getmonthoftwomonth(string sdate, string edate) throws exception { dateformat df = new simpledateformat("yyyy-mm"); date date1 = df.parse(sdate); date date2 = df.parse(edate); if (null == date1 || null == date2) { return -1; } calendar c1 = calendar.getinstance(); c1.settime(date1); calendar c2 = calendar.getinstance(); c2.settime(date2); int month1 = c1.get(calendar.year) * 12 + c1.get(calendar.month); int month2 = c2.get(calendar.year) * 12 + c2.get(calendar.month); return month2 - month1; } /**比较两个日期 * @param sdate 起始日期 * @param edate 结束日期 * @param pattern 日期格式 * @return boolean 返回比较结果 * @throws exception */ public static boolean comparedate(string sdate, string edate, string pattern) throws exception { dateformat df1 = new simpledateformat(pattern); date date1 = df1.parse(sdate); date date2 = df1.parse(edate); if (null == date1 || null == date2) { return false; } long intervalmilli = date2.gettime() - date1.gettime(); if (intervalmilli > 0) { return true; } return false; } /**获取两个日期之间的分钟数 * @param sdate 起始日期 yyyy-mm-dd hh:mm:ss * @param edate 结束日期 yyyy-mm-dd hh:mm:ss * @return int--分钟数 * @throws exception */ public static int getminsoftwodate(string sdate, string edate) throws exception { dateformat df1 = new simpledateformat("yyyy-mm-dd hh:mm:ss"); dateformat df2 = new simpledateformat("yyyy-mm-dd hh:mm:ss"); date date1 = df1.parse(sdate); date date2 = df2.parse(edate); if (null == date1 || null == date2) { return -1; } long intervalmilli = date2.gettime() - date1.gettime(); return (int) (intervalmilli / (60 * 1000)); } /** * 获取当前系统时间的字符串 * * @return string -- 当天的整个日期字符串,年月日时分秒,返回格式yyyy-mm-dd hh:mm:ss * @throws exception * */ public static string gettodayallstr() throws exception { dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss"); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /** * 获取当前系统日期的字符串 * * @return string-- 当天的年月日字符串,返回格式 yyyy-mm-dd * @throws exception * */ public static string gettodaydatestr() throws exception { dateformat df = new simpledateformat("yyyy-mm-dd"); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /** * 获取当前系统日期的字符串 * * @return string -- 当天的年月日字符串,返回格式 yyyymmdd * */ public static string gettodayymd() throws exception { dateformat df = new simpledateformat("yyyymmdd"); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /**获取当前系统时间的指定类型字符串 * @param pattern 指定的格式 * @return string-- 当天的指定类型的字符串 * @throws exception */ public static string gettodaystrbypattern(string pattern) throws exception { dateformat df = new simpledateformat(pattern); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /** * 获取当前系统时间的字符串 * * @return string 当天的时分秒字符串,返回格式hh:mm:ss * */ public static string gettodayhmsstr() throws exception { dateformat df = new simpledateformat("hh:mm:ss"); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /** * 获取当前系统时间的字符串 * * @return string -- 当天的时分秒字符串,返回格式hhmmss * */ public static string gettodayhms() throws exception { dateformat df = new simpledateformat("hhmmss"); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /**获取当前系统指定格式的时间的字符串 * @param pattern 指定格式 * @return string 当前系统指定格式时间字符串 * @throws exception */ public static string gettodayhmsbypattern(string pattern) throws exception { dateformat df = new simpledateformat(pattern); date date = new date(system.currenttimemillis()); string str = df.format(date); return str; } /** * 获取指定日期的时刻字符串 * * @param daystr * (yyyy-mm-dd hh:mm:ss) * @return string -- 当天的时分秒字符串,返回格式:hhmmss * */ public static string gethmsstrfordatetime(string daystr) throws exception { dateformat df = new simpledateformat("hhmmss"); dateformat df2 = new simpledateformat("yyyy-mm-dd hh:mm:ss"); string str = df.format(df2.parse(daystr)); return str; } /** * 日期格式转换 oldpattern 转成 newpattern * * @param str 要转换格式的日期字符串 * @param oldpattern 原有格式 * @param newpattern 目标格式 * @return string转换格式化后的字符串 * @throws exception */ public static string changedatetype(string str, string oldpattern, string newpattern) throws exception { dateformat df = new simpledateformat(oldpattern); dateformat df1 = new simpledateformat(newpattern); return df1.format(df.parse(str)); } /** * 获取输入日期的前后几小时的日期时间 * * @param date基准日期yyyy-mm-dd hh:mm:ss * @param daymark找基准日期 * +代表往后,-代表往前 * @return * @throws exception * * */ public static string getotherhour(string date, int daymark) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.hour_of_day, daymark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime; return strstart; } /** * 获取前后分钟数 * * @param date yyyy-mm-dd hh:mm:ss * @param minutemark 前后标识+-数值 * @return 返回 * @throws exception */ public static string getotherminute(string date, int minutemark) throws exception { dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss"); date dt = df.parse(date); calendar c = calendar.getinstance(); c.settime(dt); c.add(calendar.minute, minutemark); string mdatetime = df.format(c.gettime()); string strstart = mdatetime; return strstart; } /** * 解析字符串为date类型 * @param date 要被解析的日期字符串 * @param pattern 类型格式,默认yyyy-mm-dd hh:mm:ss * @return date 被解析后的日期 * @throws exception */ public static date parsedate(string date, string pattern) throws exception { date returndate = null; if (pattern == null || pattern.equals("") || pattern.equals("null")) { pattern = "yyyy-mm-dd hh:mm:ss"; } java.text.simpledateformat sdf = new java.text.simpledateformat(pattern); try { returndate = sdf.parse(date); } catch (exception e) { e.printstacktrace(); } return returndate; } /** * 格式化date类型日期 * @param date date类型日期 * @param pattern 类型格式 * @return string,被格式化后的日期 * @throws exception */ public static string formatdate(date date, string pattern) throws exception { string returndate = null; if (date == null) { return ""; } if (pattern == null || pattern.equals("") || pattern.equals("null")) { pattern = "yyyy-mm-dd hh:mm:ss"; } java.text.simpledateformat sdf = new java.text.simpledateformat(pattern); returndate = sdf.format(date); return returndate; } /** * 得到当前月份yyyy-mm; * * @return string */ public static string getsystemmonth() { java.util.date date = new java.util.date(); simpledateformat formatter = new simpledateformat("yyyy-mm"); string mdatetime1 = formatter.format(date); return mdatetime1; } /** * 获取月所在年的最后一个月 * @param month 月份 * @param m * @return * @throws exception */ public static string getyearlastmonth(string month, int m) throws exception { simpledateformat format = new simpledateformat("yyyy-mm"); date newdate = new date(); newdate = format.parse(month); calendar c = calendar.getinstance(); c.settime(newdate); c.add(calendar.year, m); newdate.settime(c.gettimeinmillis()); return format.format(newdate).substring(0, 4) + "-12"; } /** * 获取前后月份 * + 往后推迟m月 * * @param month * @param m * @return * @throws exception */ public static string getothermonth(string month, int m) throws exception { simpledateformat format = new simpledateformat("yyyy-mm"); date newdate = new date(); newdate = format.parse(month); calendar c = calendar.getinstance(); c.settime(newdate); c.add(calendar.month, m); newdate.settime(c.gettimeinmillis()); return format.format(newdate); } /** * 获取前后月份+ 往后推迟m月 * * @param month * @param m * @return * @throws exception */ public static string getothermonthymd(string month, int m) throws exception { simpledateformat format = new simpledateformat("yyyy-mm-dd"); date newdate = new date(); newdate = format.parse(month); calendar c = calendar.getinstance(); c.settime(newdate); c.add(calendar.month, m); newdate.settime(c.gettimeinmillis()); return format.format(newdate); } /** * 根据年月字符串得到那个月的总天数 * @param monthstr yyyy-mm * @return int 总天数 * @throws exception */ public static int getdaysofmonth(string monthstr) throws exception { simpledateformat format = new simpledateformat("yyyy-mm"); date date = format.parse(monthstr); calendar calendar = new gregoriancalendar(); calendar.settime(date); int daynum = calendar.getactualmaximum(calendar.day_of_month); return daynum; } /** * 获取指定时刻前后指定步长的时刻 * * @param time * 时刻hh:mm:ss * @param m * 步长(+-m) 0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻 * @return string hh:mm:ss * @throws exception */ public static string getbeforeaftertimeformin(string time, int m) throws exception { calendar now = calendar.getinstance(); simpledateformat format = new simpledateformat("hh:mm:ss"); date newdate = new date(); newdate = format.parse(time); now.settime(newdate); now.add(calendar.minute, m); return format.format(now.gettime()); } /** * 获取指定格式的前后时间 * * @param time * @param m * (0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻) * @param pattern * 类型的格式必须被time的格式所包含 * @return * @throws exception */ public static string getbeforeafterdatetimebytime(string time, int m, string pattern) throws exception { calendar now = calendar.getinstance(); simpledateformat sdf = new simpledateformat(pattern); date newdate = new date(); newdate = sdf.parse(time); now.settime(newdate); now.add(calendar.minute, m); return sdf.format(now.gettime()); } }
这就是整个工具类了,供君参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java制作智能拼图游戏原理及代码