Java工具类之Date日期操作工具类

来源:互联网 发布:python实战 编辑:程序博客网 时间:2024/06/01 22:35

  日期操作是日常开发当中最常见的操作之一,故开放下自己封装的常用工具操作方法。

package com.zel.yuqing.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtil {public static int dateStringLength = "yyyy-MM-dd HH:mm:ss".length();public SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public SimpleDateFormat yyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-dd HH:mm");public static SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");public static SimpleDateFormat yyyyMMddHH_NOT_ = new SimpleDateFormat("yyyyMMdd");public static long DATEMM = 24 * 60 * 60;public static long getTimeNumberToday() {Date date = new Date();String str = yyyyMMdd.format(date);try {date = yyyyMMdd.parse(str);return date.getTime() / 1000L;} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return 0;}public static String getTodateStringWithSplit() {Date date = new Date(System.currentTimeMillis());String str = yyyyMMdd.format(date);return str;}public static String getTodateString() {Date date = new Date(System.currentTimeMillis());String str = yyyyMMddHH_NOT_.format(date);return str;}public static String getYesterdayString() {Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L);String str = yyyyMMddHH_NOT_.format(date);return str;}/** * 取得昨天的最小Date对象值 * @return */public static Date getYesterdayMinDate() {String yesterday = DateUtil.getYesterdayString();int year = Integer.parseInt(yesterday.substring(0, 4).toString());int month = Integer.parseInt(yesterday.substring(4, 6).toString());int dayNumber = Integer.parseInt(yesterday.substring(6, 8).toString());long l = DateUtil.getMinMsOfDate(year, month, dayNumber);return new Date(l);}public static Date dd = null;public static long getTimeLong(int years) {dd = new Date();dd.setYear(dd.getYear() + years);return dd.getTime();}public static long getLongByDate() {return new Date().getTime();}public Date getDateByString(String date_str) throws Exception {date_str = date_str.trim();if (date_str.length() == dateStringLength && date_str.startsWith("20")) {return yyyyMMddHHmmss.parse(date_str);} else {throw new Exception();}}/** * 将Date值格式化成指定的字符串 *  * @param date * @return * @throws Exception */public String getStringByDate(Date date) throws Exception {return yyyyMMddHHmmss.format(date);}String temp_time_string = null;String temp_time = null;/** * 解析一个字符串成为一个Date类型的值 *  * @param publishTimeString * @return * @throws ParseException */public Date getDateByNoneStruture4Sina(String publishTimeString)throws ParseException {if (publishTimeString.contains("\"")) {publishTimeString = publishTimeString.trim().substring(1,publishTimeString.trim().length() - 1);}if (publishTimeString.contains("月")) {String temp_date = "" + (1900 + new Date().getYear());temp_time = publishTimeString.substring(0, publishTimeString.indexOf("月"));if (temp_time.length() == 1) {temp_time = "0" + temp_time;}temp_date = temp_date + "-" + temp_time;temp_time = publishTimeString.substring(publishTimeString.indexOf("月") + 1, publishTimeString.indexOf("日"));if (temp_time.length() == 1) {temp_time = "0" + temp_time;}temp_date = temp_date + "-" + temp_time;temp_time = publishTimeString.substring(publishTimeString.indexOf(" ") + 1, publishTimeString.length());temp_date = temp_date + " " + temp_time + ":00";// System.out.println("时间---"+temp_time);// System.out.println("temp_date----"+temp_date);return yyyyMMddHHmmss.parse(temp_date);} else if (publishTimeString.contains("今天")) {publishTimeString = publishTimeString.substring(publishTimeString.indexOf(" "), publishTimeString.length()).trim();publishTimeString += ":00";temp_time = yyyyMMddHHmmss.format(new Date());temp_time = temp_time.substring(0, temp_time.indexOf(" "));publishTimeString = temp_time + " " + publishTimeString;return yyyyMMddHHmmss.parse(publishTimeString);} else if (publishTimeString.contains("分钟")) {temp_time = publishTimeString.substring(0, publishTimeString.indexOf('分'));// 通过化成ms后的相减操作来完成减多少minutes的操作return new Date(getLongByDate() - Integer.parseInt(temp_time) * 60* 1000);} else if (publishTimeString.contains("-")) {String temp_all = null;if (publishTimeString.length() == "yyyy-mm-dd hh:mm".length()) {publishTimeString = publishTimeString + ":00";return yyyyMMddHHmmss.parse(publishTimeString);} else {temp_time = publishTimeString.split(" ")[0];String[] temp_array = temp_time.split("-");for (String temp : temp_array) {if (temp.length() == 4) {temp_all = temp;} else if (temp.length() == 1) {temp_all += ("-0" + temp);} else {temp_all += ("-" + temp);}}temp_all += " " + publishTimeString.split(" ")[1] + ":00";}return yyyyMMddHHmmss.parse(temp_all);} else if (publishTimeString.contains("秒")) {return new Date();} else {return new Date();}}public static String dateLongToMMHHssString(Long time) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar cal = Calendar.getInstance();cal.setTimeInMillis(time);return format.format(cal.getTime());}public String formatLongToMMHHssString(String time) {try {return yyyyMMddHHmmss.format(Long.parseLong(time));} catch (Exception e) {return "";}}/** * 得到传入的date的long型值对应的指定format格式的字符串 *  * @param time * @return */public String formatDtString(long time) {try {return yyyyMMddHH_NOT_.format(time);} catch (Exception e) {return "";}}// 不可大数据量使用public static String getServeralDaysAgo(int daysNumber) {SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_MONTH, -1 * daysNumber);return format.format(cal.getTime());}// 不可大数据量使用,因为Calendar的月的计算是从0开始的,所以传入的month,统一都减去1public static long getMinMsOfDate(int year, int month, int dayNumber) {Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, dayNumber, 0, 0, 0);long ts = calendar.getTimeInMillis();String ts_str = ("" + ts).substring(0, ("" + ts).length() - 3) + "000";return Long.parseLong(ts_str);}/** * 得到传入的year,month,day后的最大的Date值,常用做范围查询 *  * @param year * @param month * @param dayNumber * @return */public static long getMaxMsOfDate(int year, int month, int dayNumber) {Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, dayNumber, 23, 59, 59);long ts = calendar.getTimeInMillis();String ts_str = ("" + ts).substring(0, ("" + ts).length() - 3) + "999";return Long.parseLong(ts_str);}/** * 得到当前时间之指定几天前的字符串 *  * @param day_num * @return */public static String getFormatDtFromDaysAgo(int day_num) {Date date = new Date(System.currentTimeMillis() - day_num * DATEMM* 1000L);String str = yyyyMMddHH_NOT_.format(date);return str;}/** * 得到本周的第一天所在的最小的Date值 *  * @return */public static Date getFirstDayMinDateOfThisWeek() {Calendar cal = Calendar.getInstance();// 首先判断今天是不是周日,如果是周日,则weekOfYear-1,否则不做weekOfYear的改动int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String today_dt = DateUtil.getTodateString();if (today_dt.equals(sdf.format(cal.getTime()))) {weekOfYear = weekOfYear - 1;}cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return cal.getTime();}/** * 得到当前月份的第一天所在的最小的Date值 *  * @return */public static Date getFirstDayMinDateOfThisMonth() {Calendar cal = Calendar.getInstance();// 首先判断今天是不是周日,如果是周日,则weekOfYear-1,否则不做weekOfYear的改动int monthOfYear = cal.get(Calendar.MONTH);cal.set(Calendar.MONTH, monthOfYear);cal.set(Calendar.DAY_OF_MONTH, 1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);return cal.getTime();}public static void main(String[] args) throws Exception {DateUtil du = new DateUtil();// long ts = new Date().getTime();// System.out.println(DateUtil.getMinMsOfDate(2014, 9, 25));// String dt = DateUtil.getServeralDaysAgo(2);// System.out.println("dt=" + dt);// long ts = DateUtil.getMinMsOfDate(2014, 9-1, 25);// System.out.println("ts---" + ts);System.out.println(du.getFirstDayMinDateOfThisMonth());// String yesterday = DateUtil.getYesterdayString();// int year = Integer.parseInt(yesterday.substring(0, 4).toString());// int month = Integer.parseInt(yesterday.substring(4, 6).toString());// int dayNumber = Integer.parseInt(yesterday.substring(6,// 8).toString());// long l = du.getMinMsOfDate(year, month, dayNumber);// System.out.println(new Date(l));}}


0 0
原创粉丝点击