这篇文章主要为大家详细介绍了java日期时间操作工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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());
}
} 这就是整个工具类了,供君参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/wdy_2099/article/details/72983397
|