java日期时间处理工具类

来源:互联网 发布:职业医师考试数据库 编辑:程序博客网 时间:2024/05/16 15:15
package util;import java.text.DateFormat;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 一些工具方法 *  */public class DataUtil { public final static SimpleDateFormat FORMAT_DATE =new SimpleDateFormat("yyyy-MM-dd");public final static SimpleDateFormat FORMAT_DATE_TIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");/*** 获取当前时间的前一天或者前几天* @param numbers* @return*/public static String theOtherDay (int numbers,String flag){Calendar calendar =Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DAY_OF_MONTH, -numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的后一天或者后几天* @param numbers* @return*/public static String afterDay (int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DAY_OF_MONTH, +numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的前一个月或者前几个月* @param numbers* @param flag* @return*/public static String beforeMonths(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.MONTH, -numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的后一个月或者后几个月* @param numbers* @param flag* @return*/public static String afterMonths(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.MONTH, +numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的前一周或者前几周* @param numbers* @param flag* @return*/public static String beforeWeek(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.WEEK_OF_YEAR, -numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的后一周或者后几周* @param numbers* @param flag* @return*/public static String afterWeek(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.WEEK_OF_YEAR, +numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的前一年或者前几年* @param numbers* @param flag* @return*/public static String beforeYear(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.YEAR, -numbers);return FORMAT_DATE_TIME.format(calendar.getTime());}/*** 获取当前时间的后一年或者后几年* @param numbers* @param flag* @return*/public static String afterYear(int numbers,String flag){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.YEAR, +numbers);return FORMAT_DATE_TIME.format(calendar.getTime());} /*** 字符串日期格式转换* @param strIn* @param strFrmOrg* @param strFrmNew* @return*/public static String dateFormatTrans(String strIn, String strFrmOrg, String strFrmNew){if (strIn == null || strIn.trim().equals("")) {return "";}String strRes = "";long lUtc = DateToUTC(strIn, strFrmOrg);strRes = DataUtil.UTCToDate(lUtc, strFrmNew);return strRes;}/*** 获取今日UTC起始值* @return*/public static String getTodayZero() {long lRes = 0l;Date date = new Date();String strDate = new SimpleDateFormat("yyyy-MM-dd").format(date);strDate += " 00:00:00";lRes = DataUtil.DateToUTC(strDate, "yyyy-MM-dd HH:mm:ss");return lRes + "";}/*** 今日结束值* @return*/public static String getTodayEnd() {long lRes = 0l;Date date = new Date();String strDate = new SimpleDateFormat("yyyy-MM-dd").format(date);strDate += " 23:59:59";lRes = DataUtil.DateToUTC(strDate, "yyyy-MM-dd HH:mm:ss");return lRes + "";}/*** 时间字符串转换为UTC* @param date* @param format* @return*/public static long DateToUTC(String date, String format) {if (date == null || date.equals("")) {return 0;}SimpleDateFormat sdf = new SimpleDateFormat(format);long utc = 0;try {utc = sdf.parse(date).getTime() / 1000;} catch (java.text.ParseException e) {}return utc;}/*** UTC时间字符串转为format格式*/public static String UTCToDate(long utc, String format) {if (utc == 0) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(format);Date d = new Date(utc * 1000);return sdf.format(d);}/*** 获取当前的UTC时间*/public static Long getUtcNow(){Date dateNow = new Date();Long lRes = dateNow.getTime() / 1000;return lRes;}/*** 获取指定周的utc时间*/public static Long getWeekSt(int year,int week){Calendar cal = Calendar.getInstance();          //设置年份          cal.set(Calendar.YEAR,year);          //设置周          cal.set(Calendar.WEEK_OF_YEAR, week + 1);          //设置该周第一天为星期一          cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);          //格式化日期          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");          String strRes = sdf.format(cal.getTime());  return DateToUTC(strRes, "yyyy-MM-dd");}public static Long getWeekEd(int year,int week){Calendar cal = Calendar.getInstance();          //设置年份          cal.set(Calendar.YEAR,year);          //设置周          cal.set(Calendar.WEEK_OF_YEAR, week);          //设置该周第一天为星期一          cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);          //格式化日期          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");          String strRes = sdf.format(cal.getTime());  return DateToUTC(strRes, "yyyy-MM-dd");}/*** 获取当前时间的前几天的开始时间* @param iDayNum* @return*/public static long getUtcBeforDayStart(Integer iDayNum){Calendar dt30Ago = Calendar.getInstance();dt30Ago.setTime(new Date());dt30Ago.add(Calendar.DATE, -1*iDayNum);String strDate = new SimpleDateFormat("yyyy-MM-dd").format(dt30Ago.getTime());return DataUtil.DateToUTC(strDate + " 00:00:00", "yyyy-MM-dd HH:mm:ss");}/*** 获取当前时间的前几天的结束时间* @param iDayNum* @return*/public static long getUtcBeforDayEnd(Integer iDayNum){Calendar dt30Ago = Calendar.getInstance();dt30Ago.setTime(new Date());dt30Ago.add(Calendar.DATE, -1*iDayNum);String strDate = new SimpleDateFormat("yyyy-MM-dd").format(dt30Ago.getTime());return DataUtil.DateToUTC(strDate + " 23:59:59", "yyyy-MM-dd HH:mm:ss");}/*** 时间点转成long* * @param timePoint*            格式HH:mm:ss* @return long*/public static long timePointToLong(String timePoint) {if (timePoint == null || timePoint.equals("")) {return -1;}long utc = -1;try {String[] hm = timePoint.split(":");int h = Integer.parseInt(hm[0]);int m = Integer.parseInt(hm[1]);int s = Integer.parseInt(hm[2]);utc = h * 60 * 60 + m * 60 + s;} catch (NumberFormatException e) {e.printStackTrace();}return utc;}/*** 时间点转成long:精确到分钟* @param timePoint 格式HH:mm:ss* @return long*/public static long timePointToHMLong(String timePoint) {if (timePoint == null || timePoint.equals("")) {return -1;}long utc = -1;try {String[] hm = timePoint.split(":");int h = Integer.parseInt(hm[0]);int m = Integer.parseInt(hm[1]);int s = Integer.parseInt(hm[2]);utc = h * 60  + m ;} catch (NumberFormatException e) {}return utc;}/*** 时间点转成long* * @param timePoint*            格式HH:mm* @return long*/public static long HMPointToLong(String timePoint) {if (timePoint == null || timePoint.equals("")) {return -1;}long utc = -1;try {String[] hm = timePoint.split(":");int h = Integer.parseInt(hm[0]);int m = Integer.parseInt(hm[1]);utc = h * 60 * 60 + m * 60;} catch (NumberFormatException e) {// e.printStackTrace();}return utc;}/*** 时间点转成long* * @param timePoint*            格式HH* @return long*/public static long HoursPointToLong(String timePoint) {if (timePoint == null || timePoint.equals("")) {return -1;}long utc = -1;try {utc = Integer.parseInt(timePoint) * 60 * 60;} catch (NumberFormatException e) {}return utc;}/*** long转成时间点* * @param utc*            long* @return 格式HH:mm:ss*/public static String longToTimePoint(long utc) {StringBuilder timePoint = new StringBuilder();try {long h = utc / 3600;long mod = utc % 3600;long m = mod / 60;long s = (utc % 3600) % 60;if (h == 0) {timePoint.append("00");} else if (h > 0 && h < 10) {timePoint.append("0").append(h);} else {timePoint.append(h);}timePoint.append(":");if (m == 0) {timePoint.append("00");} else if (m > 0 && m < 10) {timePoint.append("0").append(m);} else {timePoint.append(m);}timePoint.append(":");if (s == 0) {timePoint.append("00");} else if (s > 0 && s < 10) {timePoint.append("0").append(s);} else {timePoint.append(s);}} catch (Exception e) {}return timePoint.toString();}/*** long转成时间点* * @param utc*            long* @return 格式HH:mm*/public static String longToHM(long utc) {StringBuilder timePoint = new StringBuilder();try {long h = utc / 3600;long mod = utc % 3600;long m = mod / 60;if (h == 0) {timePoint.append("00");} else if (h > 0 && h < 10) {timePoint.append("0").append(h);} else {timePoint.append(h);}timePoint.append(":");if (m == 0) {timePoint.append("00");} else if (m > 0 && m < 10) {timePoint.append("0").append(m);} else {timePoint.append(m);}} catch (Exception e) {// e.printStackTrace();}return timePoint.toString();}/*** 分钟数转成时间点:秒默认00* * @param utc*            long* @return 格式HH:mm:ss*/public static String HMlongToTime(long utc) {StringBuilder timePoint = new StringBuilder();try {long h = utc / 60;long m = utc % 60;if (h == 0) {timePoint.append("00");} else if (h > 0 && h < 10) {timePoint.append("0").append(h);} else {timePoint.append(h);}timePoint.append(":");if (m == 0) {timePoint.append("00");} else if (m > 0 && m < 10) {timePoint.append("0").append(m);} else {timePoint.append(m);}timePoint.append(":");timePoint.append("00");} catch (Exception e) {// e.printStackTrace();}return timePoint.toString();}/*** long转成时间点* * @param utc*            long* @return 格式HH*/public static String longToHours(long utc) {StringBuilder timePoint = new StringBuilder();try {long h = utc / 3600;if (h == 0) {timePoint.append("00");} else if (h > 0 && h < 10) {timePoint.append("0").append(h);} else {timePoint.append(h);}} catch (Exception e) {}return timePoint.toString();}/*** @param date*            格式 2009-07-02 返回090902* @return* @throws Exception*/public static String subDate(String date) throws Exception {String reStr = "";String[] array = date.split("-");reStr += array[0].substring(2);reStr += array[1];reStr += array[2];return reStr;}/*** @param time*            格式 09:09:00 返回090900* @return* @throws Exception*/public static String subTimeHMS(String time) throws Exception {String reStr = "";String[] array = time.split(":");reStr += array[0];reStr += array[1];reStr += array[2];return reStr;}/*** @param time*            格式 09:09:00 返回090900* @return* @throws Exception*/public static String subTimeHM(String time) throws Exception {String reStr = "";String[] array = time.split(":");reStr += array[0];reStr += array[1];return reStr;}public static String subTimeYMDHMS(String time) throws Exception {String reStr = "";String[] aray = time.split(" ");reStr += DataUtil.subDate(aray[0]);reStr += DataUtil.subTimeHMS(aray[1]);return reStr;}public static String YMDHMStosubTime(String time) throws Exception {if (time != null && time.length() == 12) {String date = time.substring(0, 6);String t = time.substring(6);String year = "20" + date.substring(0, 2);String mon = date.substring(2, 4);String d = date.substring(4, 6);String h = t.substring(0, 2);String m = t.substring(2, 4);String s = t.substring(4, 6);return year + "-" + mon + "-" + d + " " + h + ":" + m + ":" + s;}return "";}public static String YMDtosubDate(String time) {if (time != null && time.length() == 8) {String date = time.substring(0, 8);String year = date.substring(0, 4);String mon = date.substring(4, 6);String d = date.substring(6, 8);return year + "-" + mon + "-" + d;}return "";}/*** 转换时分秒*/public String getTimeToDate(String value) {if (value.equals("")) {return "";}String rv = "";int c_time = Integer.parseInt(value);int t_hours = 60 * 60 * 24;if (c_time > t_hours) {// 天int v_day = c_time / t_hours;rv = v_day + "天 " + dayToDate(c_time % t_hours);} else if (c_time == t_hours) {// 整1小时rv = "1天0小时0分0秒";} else {rv = dayToDate(c_time);}return rv;}public String dayToDate(int value) {String v_time = null;int t_hours = 60 * 60 * 24, t_min = 60 * 60, t_sec = 60;int c_time = value;if (c_time < t_sec) {// 秒v_time = c_time + "秒";} else if (c_time == t_sec) {// 整1分钟v_time = "1分0秒";} else if (c_time > t_sec && c_time < t_min) {// 分钟int v_min = c_time / t_sec;int v_sec = c_time % t_sec;v_time = v_min + "分" + v_sec + "秒";} else if (c_time == t_min) {// 整1小时v_time = "1小时0分0秒";} else if (c_time > t_min && c_time < t_hours) {// 小时int v_hours = c_time / t_min;int v_min = (c_time - v_hours * 3600) / t_sec;int v_sec = (c_time - v_hours * 3600) % t_sec;v_time = v_hours + "小时" + v_min + "分" + v_sec + "秒";}return v_time;}/*** 日期转化日期字符串* @param format 格式* @param date 日期* @return*/public static String date2Str(String format, Date date){String dateStr = null;SimpleDateFormat sdf = new SimpleDateFormat(format, java.util.Locale.CHINESE);dateStr = sdf.format(date);return dateStr;}/*** 获取当前年份的列表,从今年开始算起* @param iNum* @return*/public static List<String> getCurYearList(int iNum) {List<String> lsRes = new ArrayList<String>();if (iNum < 1) {iNum = 1;}String strYearNow = date2Str("yyyy", new Date());Integer iYearNow = Integer.parseInt(strYearNow);for (int i = 0; i < iNum; i++) {String strTmp = "" + (iYearNow - i);lsRes.add(strTmp);}return lsRes;}/*** 获取当前时间所处今年第几周* @return*/public static Integer getWeekNum() {Integer iNum = 0;Calendar c = Calendar.getInstance();c.setTime(new Date());c.set(Calendar.DAY_OF_MONTH,c.get(Calendar.DAY_OF_MONTH)-7);iNum = c.get(Calendar.WEEK_OF_YEAR);return iNum;}/** 计算耗时及单位* 转化毫秒 */public static String getTimeBysed(long x) {String time = "";if (x < 1000) {time = x + "ms";} else if (x >= 1000 && x < 60000) {time = Math.round((x / 1000D) * 10) / 10D + "s";} else if (x >= 60000 && x < 3600000) {time = Math.round((x / 1000D / 60D) * 10) / 10D + "m";} else {time = Math.round((x / 1000D / 60D / 60D) * 10) / 10D + "h";}return time;}}