欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java日期时间操作工具类

程序员文章站 2024-03-04 09:15:11
本文实例为大家分享了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());
 }
 
}

这就是整个工具类了,供君参考。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。