package com.aptech.util;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Locale;import java.util.Random;public class DateFormats {public DateFormats() {}/*** 將長(zhǎng)時(shí)間格式時(shí)間轉(zhuǎn)換為字符串 yyyy-MM-dd HH:mm:ss** @param dateDate* @return 返回時(shí)間String類型 yyyy-MM-dd HH:mm:ss*/public static String DateToStringDate(java.util.Date dateDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(dateDate);return dateString;}/*** 獲取現(xiàn)在時(shí)間**/public static Date getCurrentDate() {Date currentDate = new Date();return currentDate;}/*** 獲取現(xiàn)在時(shí)間** @return 返回時(shí)間類型 yyyy-MM-dd HH:mm:ss*/public static Date getNowDate() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);ParsePosition pos = new ParsePosition(8);Date currentTime_2 = formatter.parse(dateString, pos);return currentTime_2;}/*** 獲取現(xiàn)在時(shí)間** @return返回短時(shí)間格式 yyyy-MM-dd*/public static Date getNowDateShort() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");String dateString = formatter.format(currentTime);ParsePosition pos = new ParsePosition(8);Date currentTime_2 = formatter.parse(dateString, pos);return currentTime_2;}/*** 獲取現(xiàn)在時(shí)間** @return返回字符串格式 yyyy-MM-dd HH:mm:ss*/public static String getStringDate() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);return dateString;}/*** 獲取現(xiàn)在時(shí)間** @return 返回短時(shí)間字符串格式y(tǒng)yyy-MM-dd*/public static String getStringDateShort() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");String dateString = formatter.format(currentTime);return dateString;}/*** 獲取時(shí)間 小時(shí):分;秒 HH:mm:ss** @return*/public static String getTimeShort() {SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");Date currentTime = new Date();String dateString = formatter.format(currentTime);return dateString;}/*** 將長(zhǎng)時(shí)間格式字符串轉(zhuǎn)換為時(shí)間 yyyy-MM-dd HH:mm:ss** @param strDate* @return*/public static Date strToDateLong(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 將短時(shí)間格式時(shí)間轉(zhuǎn)換為字符串 yyyy-MM-dd** @param dateDate* @param k* @return*/public static String dateToStr(java.util.Date dateDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");String dateString = formatter.format(dateDate);return dateString;}/*** 將短時(shí)間格式字符串轉(zhuǎn)換為時(shí)間 yyyy-MM-dd** @param strDate* @return*/public static Date strToDate(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 得到現(xiàn)在時(shí)間** @return*/public static Date getNow() {Date currentTime = new Date();return currentTime;}/*** 提取一個(gè)月中的最后一天** @param day* @return*/public static Date getLastDate(long day) {Date date = new Date();long date_3_hm = date.getTime() - 3600000 * 34 * day;Date date_3_hm_date = new Date(date_3_hm);return date_3_hm_date;}/*** 得到現(xiàn)在時(shí)間** @return 字符串 yyyyMMdd HHmmss*/public static String getStringToday() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");String dateString = formatter.format(currentTime);return dateString;}// 計(jì)算當(dāng)月最后一天,返回字符串public String getDefaultDay(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//設(shè)為當(dāng)前月的1號(hào)lastDate.add(Calendar.MONTH,1);//加一個(gè)月,變?yōu)橄略碌?號(hào)lastDate.add(Calendar.DATE,-1);//減去一天,變?yōu)楫?dāng)月最后一天str=sdf.format(lastDate.getTime());return str;}/*** 得到現(xiàn)在小時(shí)*/public static String getHour() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);String hour;hour = dateString.substring(11, 13);return hour;}/*** 得到現(xiàn)在分鐘** @return*/public static String getTime() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);String min;min = dateString.substring(14, 16);return min;}/*** 根據(jù)用戶傳入的時(shí)間表示格式,返回當(dāng)前時(shí)間的格式 如果是yyyyMMdd,注意字母y不能大寫(xiě)。** @param sformat* yyyyMMddhhmmss* @return*/public static String getUserDate(String sformat) {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat(sformat);String dateString = formatter.format(currentTime);return dateString;}/*** 二個(gè)小時(shí)時(shí)間間的差值,必須保證二個(gè)時(shí)間都是"HH:MM"的格式,返回字符型的分鐘*/public static String getTwoHour(String st1, String st2) {String[] kk = null;String[] jj = null;kk = st1.split(":");jj = st2.split(":");if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0]))return "0";else {double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60;double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60;if ((y - u) > 0)return y - u + "";elsereturn "0";}}/*** 得到二個(gè)日期間的間隔天數(shù)*/public static String getTwoDay(String sj1, String sj2) {SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");long day = 0;try {java.util.Date date = myFormatter.parse(sj1);java.util.Date mydate = myFormatter.parse(sj2);day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);} catch (Exception e) {return "";}return day + "";}/*** 時(shí)間前推或后推分鐘,其中JJ表示分鐘.*/public static String getPreTime(String sj1, String jj) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String mydate1 = "";try {Date date1 = format.parse(sj1);long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60;date1.setTime(Time * 1000);mydate1 = format.format(date1);} catch (Exception e) {}return mydate1;}/*** 得到一個(gè)時(shí)間延后或前移幾天的時(shí)間,nowdate為時(shí)間,delay為前移或后延的天數(shù)*/public static String getNextDay(String nowdate, String delay) {try{SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String mdate = "";Date d = strToDate(nowdate);long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;d.setTime(myTime * 1000);mdate = format.format(d);return mdate;}catch(Exception e){return "";}}/*** 判斷是否潤(rùn)年** @param ddate* @return*/public static boolean isLeapYear(String ddate) {/*** 詳細(xì)設(shè)計(jì): 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時(shí)不能被100整除則是閏年* 3.能被4整除同時(shí)能被100整除則不是閏年*/Date d = strToDate(ddate);GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();gc.setTime(d);int year = gc.get(Calendar.YEAR);if ((year % 400) == 0)return true;else if ((year % 4) == 0) {if ((year % 100) == 0)return false;elsereturn true;} elsereturn false;}/*** 返回美國(guó)時(shí)間格式 26 Apr 2006** @param str* @return*/public static String getEDate(String str) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(str, pos);String j = strtodate.toString();String[] k = j.split(" ");return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);}/*** 獲取一個(gè)月的最后一天** @param dat* @return*/public static String getEndDateOfMonth(String dat) {// yyyy-MM-ddString str = dat.substring(0, 8);String month = dat.substring(5, 7);int mon = Integer.parseInt(month);if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {str += "31";} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {str += "30";} else {if (isLeapYear(dat)) {str += "29";} else {str += "28";}}return str;}/*** 判斷二個(gè)時(shí)間是否在同一個(gè)周** @param date1* @param date2* @return*/public static boolean isSameWeekDates(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);if (0 == subYear) {if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))return true;} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {// 如果12月的最后一周橫跨來(lái)年第一周的話則最后一周即算做來(lái)年的第一周if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))return true;} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))return true;}return false;}/*** 產(chǎn)生周序列,即得到當(dāng)前時(shí)間所在的年度是第幾周** @return*/public static String getSeqWeek() {Calendar c = Calendar.getInstance(Locale.CHINA);String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));if (week.length() == 1)week = "0" + week;String year = Integer.toString(c.get(Calendar.YEAR));return year + week;}/*** 獲得一個(gè)日期所在的周的星期幾的日期,如要找出2002年2月3日所在周的星期一是幾號(hào)** @param sdate* @param num* @return*/public static String getWeek(String sdate, String num) {// 再轉(zhuǎn)換為時(shí)間Date dd = DateFormats.strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(dd);if (num.equals("1")) // 返回星期一所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);else if (num.equals("2")) // 返回星期二所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);else if (num.equals("3")) // 返回星期三所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);else if (num.equals("4")) // 返回星期四所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);else if (num.equals("5")) // 返回星期五所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);else if (num.equals("6")) // 返回星期六所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);else if (num.equals("0")) // 返回星期日所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());}/*** 根據(jù)一個(gè)日期,返回是星期幾的字符串** @param sdate* @return*/public static String getWeek(String sdate) {// 再轉(zhuǎn)換為時(shí)間Date date = DateFormats.strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);// int hour=c.get(Calendar.DAY_OF_WEEK);// hour中存的就是星期幾了,其范圍 1~7// 1=星期日 7=星期六,其他類推return new SimpleDateFormat("EEEE").format(c.getTime());}public static String getWeekStr(String sdate){String str = "";str = DateFormats.getWeek(sdate);if("1".equals(str)){str = "星期日";}else if("2".equals(str)){str = "星期一";}else if("3".equals(str)){str = "星期二";}else if("4".equals(str)){str = "星期三";}else if("5".equals(str)){str = "星期四";}else if("6".equals(str)){str = "星期五";}else if("7".equals(str)){str = "星期六";}return str;}/*** 兩個(gè)時(shí)間之間的天數(shù)** @param date1* @param date2* @return*/public static long getDays(String date1, String date2) {if (date1 == null || date1.equals(""))return 0;if (date2 == null || date2.equals(""))return 0;// 轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");java.util.Date date = null;java.util.Date mydate = null;try {date = myFormatter.parse(date1);mydate = myFormatter.parse(date2);} catch (Exception e) {}long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);return day;}/*** 形成如下的日歷 , 根據(jù)傳入的一個(gè)時(shí)間返回一個(gè)結(jié)構(gòu) 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是當(dāng)月的各個(gè)時(shí)間* 此函數(shù)返回該日歷第一行星期日所在的日期** @param sdate* @return*/public static String getNowMonth(String sdate) {// 取該時(shí)間所在月的一號(hào)sdate = sdate.substring(0,+ "01";// 得到這個(gè)月的1號(hào)是星期幾Date date = DateFormats.strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);int u = c.get(Calendar.DAY_OF_WEEK);String newday = DateFormats.getNextDay(sdate, (1 - u) + "");return newday;}/*** 取得數(shù)據(jù)庫(kù)主鍵 生成格式為yyyymmddhhmmss+k位隨機(jī)數(shù)** @param k* 表示是取幾位隨機(jī)數(shù),可以自己定*/public static String getNo(int k) {return getUserDate("yyyyMMddhhmmss") + getRandom(k);}/*** 返回一個(gè)隨機(jī)數(shù)** @param i* @return*/public static String getRandom(int i) {Random random = new Random();if (i == 0)return "";String strRandom = "";for (int k = 0; k < i; k++) {strRandom = strRandom + random.nextInt(9);}return strRandom;}/**** @param args*/public static boolean RightDate(String date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");;if (date == null)return false;if (date.length() > 10) {sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");} else {sdf = new SimpleDateFormat("yyyy-MM-dd");}try {sdf.parse(date);} catch (ParseException pe) {return false;}return true;}public static String getNextMonthDay(String sdate, int m) {int year = Integer.parseInt(sdate.substring(0, 4));int month = Integer.parseInt(sdate.substring(5, 7));month = month + m;if (month < 0) {month = month + 12;year = year - 1;} else if (month > 12) {month = month - 12;year = year + 1;}String smonth = "";if (month < 10)smonth = "0" + month;elsesmonth = "" + month;return year + "-" + smonth + "-10";}public static void main(String[] args) throws Exception {}}
聯(lián)系客服