package com.travel.tools.database;
import java.text.*;
import java.util.*;
/**
?*
?* <p>
?* Title: 通用工具類
?* </p>
?* <p>
?* Description: 常用工具的集合,用來處理常見問題,比如中文亂碼的方法等。
?* </p>
?* <p>
?* Copyright: Copyright (c) 2003
?* </p>
?* <p>
?* Company: Towery
?* </p>
?*
?* @author WangPinHeng
?* @version 1.0
?*/
public class Tools {
??? public Tools() {
??????? //
??? }
??? /**
???? * 字符串替換,將 source 中的 oldString 全部換成 newString
???? *
???? * @param source
???? *??????????? 源字符串
???? * @param oldString
???? *??????????? 老的字符串
???? * @param newString
???? *??????????? 新的字符串
???? * @return 替換后的字符串
???? */
??? private static String Replace(String source, String oldString,
??????????? String newString) {
??????? StringBuffer output = new StringBuffer();
??????? int lengthOfSource = source.length(); // 源字符串長度
??????? int lengthOfOld = oldString.length(); // 老字符串長度
??????? int posStart = 0; // 開始搜索位置
??????? int pos; // 搜索到老字符串的位置
??????? while ((pos = source.indexOf(oldString, posStart)) >= 0) {
??????????? output.append(source.substring(posStart, pos));
??????????? output.append(newString);
??????????? posStart = pos + lengthOfOld;
??????? }
??????? if (posStart < lengthOfSource) {
??????????? output.append(source.substring(posStart));
??????? }
??????? return output.toString();
??? }
??? /**
???? * 轉換SQL中的特殊符號,比如將單引號"'"替換為"''",以免產生SQLException
???? *
???? * @param sqlstr
???? *??????????? 原SQL
???? * @return 處理后的SQL
???? */
??? public static String toSql(String sqlstr) {
??????? String strsql = sqlstr;
??????? if (strsql == null) {
??????????? return "";
??????? }
??????? strsql = Replace(strsql, "'", "''");
??????? return strsql;
??? }
??? /**
???? * 將ISO8859_1編碼的字符串轉化為GB2312編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param ISO8859_1str
???? *??????????? 通過ISO8859_1編碼的字符串
???? * @return 通過GB2312編碼的字符串
???? */
??? public String GBString(String ISO8859_1str) {
??????? if (ISO8859_1str == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(ISO8859_1str.getBytes("ISO8859_1"), "GB2312");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將ISO8859_1編碼的字符串轉化為GB2312編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param ISO8859_1str
???? *??????????? 通過ISO8859_1編碼的字符串
???? * @return 通過GB2312編碼的字符串
???? */
??? public static String GB2312FromISO8859_1(String ISO8859_1str) {
??????? if (ISO8859_1str == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(ISO8859_1str.getBytes("ISO8859_1"), "GB2312");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? public String trim1(String str) {
??????? String str1 = "";
??????? if (str.substring(0, 1).equals("?")) {
??????????? str1 = str.substring(1, str.length());
??????????? System.out.println("str1=" + str1);
??????? } else {
??????????? str1 = str;
??????? }
??????? return str1.trim();
??? }
??? public String dateformat(String str) {
??????? String day = str.substring(0, 2);
??????? String month = str.substring(3, 5);
??????? String year = str.substring(6, 10);
??????? str = year + "-" + month + "-" + day;
??????? return str;
??? }
??? public String tenformat(String str) {
??????? if (str.length() == 8) {
??????????? String year = str.substring(0, 4);
??????????? String month = "0" + str.substring(5, 6);
??????????? String day = "0" + str.substring(7, 8);
??????????? str = year + "-" + month + "-" + day;
??????? } else if (str.length() == 9) {
??????????? if (str.substring(6, 7).equals("-")) {
??????????????? str = str.substring(0, 5) + "0" + str.substring(5, 9);
??????????? } else {
??????????????? str = str.substring(0, 8) + "0" + str.substring(8, 9);
??????????? }
??????? }
??????? return str;
??? }
??? /**
???? * 計算兩個時間
???? *
???? * @param str
???? *??????????? 原時間,strsub,需減少的時間
???? * @return 計算后的時間
???? */
??? public String subTime(String str, String strSub) {
??????? String rsTime = "";
??????? int hour = 0;
??????? int sec = 0;
??????? int secsub = 0;
??????? str = trim(str);
??????? strSub = trim(strSub);
??????? if (str.length() == 5) {
??????????? hour = Integer.parseInt(str.substring(0, 2));
??????????? sec = Integer.parseInt(str.substring(3, 5));
??????? } else if (str.length() == 4) {
??????????? hour = Integer.parseInt(str.substring(0, 1));
??????????? sec = Integer.parseInt(str.substring(2, 4));
??????? }
??????? if (trim(strSub).length() == 5) {
??????????? secsub = Integer.parseInt(strSub.substring(0, 2));
??????? } else if (trim(strSub).length() == 4) {
??????????? secsub = Integer.parseInt(strSub.substring(0, 1));
??????? }
??????? //int a = sec + secsub;
??????? if (sec < secsub) {
??????????? //System.out.println("sub <");
??????????? String jstr = Integer.toString(sec + 60 - secsub);
??????????? String hstr = Integer.toString(hour - 1);
??????????? //System.out.println("jstr="+jstr);
??????????? //System.out.println("hstr="+hstr);
??????????? if (jstr.length() == 1) {
??????????????? jstr = "0" + jstr;
??????????? }
??????????? if (hstr.length() == 1) {
??????????????? hstr = "0" + hstr;
??????????? }
??????????? rsTime = hstr + ":" + jstr;
??????? } else if (sec == secsub) {
??????????? //System.out.println("sub =");
??????????? String strh = Integer.toString(hour);
??????????? //System.out.println("strh="+strh);
??????????? if (strh.length() == 1) {
??????????????? strh = "0" + strh;
??????????? }
??????????? rsTime = strh + ":00";
??????? } else if (sec > secsub) {
??????????? //System.out.println("sub >");
??????????? String jstr = Integer.toString(sec - secsub);
??????????? //System.out.println("jstr="+jstr);
??????????? String hstr = Integer.toString(hour);
??????????? //System.out.println("hstr="+hstr);
??????????? if (jstr.length() == 1) {
??????????????? jstr = "0" + jstr;
??????????? }
??????????? if (hstr.length() == 1) {
??????????????? hstr = "0" + hstr;
??????????? }
??????????? rsTime = hstr + ":" + jstr;
??????? }
??????? return rsTime;
??? }
??? public String toSENDstr(String input) {
??????? String r = input;
??????? r = replace(r, "&", "");
??????? r = replace(r, "/", "|");
??????? r = replace(r, "\r", "");
??????? r = replace(r, "\n", "");
??????? r = replace(r, "'", "");
??????? r = replace(r, " ", "");
??????? return r;
??? }
??? public String replace(String str, String strOld, String strNew) {
??????? String r = str;
??????? if (str != null && strOld != null && strNew != null) {
??????????? int idx = str.indexOf(strOld);
??????????? if (idx != -1) {
??????????????? String strPre = "";
??????????????? r = "";
??????????????? String strSuf = str;
??????????????? for (; idx != -1; idx = strSuf.indexOf(strOld)) {
??????????????????? strPre = strSuf.substring(0, idx);
??????????????????? strSuf = strSuf.substring(idx + strOld.length());
??????????????????? r = r + strPre + strNew;
??????????????? }
??????????????? r = r + strSuf;
??????????? }
??????? }
??????? return r;
??? }
??? /**
???? * 計算兩個時間相差的分鐘數
???? *
???? * @param time1
???? *??????????? string,time2,string
???? * @return string
???? */
??? public String diffTime(String time1, String time2) {
??????? String rsTime = "";
??????? int hour = 0;
??????? int hour2 = 0;
??????? int sec = 0;
??????? int sec2 = 0;
??????? String str1 = trim(time1);
??????? String str2 = trim(time2);
??????? if (str1.length() == 5) {
??????????? hour = Integer.parseInt(str1.substring(0, 2));
??????????? sec = Integer.parseInt(str1.substring(3, 5));
??????? } else if (str1.length() == 4) {
??????????? hour = Integer.parseInt(str1.substring(0, 1));
??????????? sec = Integer.parseInt(str1.substring(2, 4));
??????? }
??????? if (str2.length() == 5) {
??????????? hour2 = Integer.parseInt(str2.substring(0, 2));
??????????? sec2 = Integer.parseInt(str2.substring(3, 5));
??????? } else if (str2.length() == 4) {
??????????? hour2 = Integer.parseInt(str2.substring(0, 1));
??????????? sec2 = Integer.parseInt(str2.substring(2, 4));
??????? }
??????? //int a = sec + secsub;
??????? if (sec < sec2) {
??????????? //System.out.println("sub <");
??????????? String jstr = Integer.toString(sec + 60 - sec2);
??????????? if (jstr.length() == 1) {
??????????????? jstr = "0" + jstr;
??????????? }
??????????? if ((hour - 1) != hour2) {
??????????????? String hstr = Integer.toString(hour - 1 - hour2);
??????????????? if (hstr.length() == 1) {
??????????????????? hstr = "0" + hstr;
??????????????? }
??????????????? rsTime = hstr + ":" + jstr + ":00";
??????????? } else {
??????????????? rsTime = jstr + ":00";
??????????? }
??????? } else if (sec == sec2) {
??????????? //System.out.println("sub =");
??????????? if (hour != hour2) {
??????????????? String strh = Integer.toString(hour - hour2);
??????????????? //System.out.println("strh="+strh);
??????????????? if (strh.length() == 1) {
??????????????????? strh = "0" + strh;
??????????????? }
??????????????? rsTime = strh + ":00" + ":00";
??????????? } else {
??????????????? rsTime = "00:00";
??????????? }
??????? } else if (sec > sec2) {
??????????? //System.out.println("sub >");
??????????? String jstr = Integer.toString(sec - sec2);
??????????? //System.out.println("jstr="+jstr);
??????????? if (jstr.length() == 1) {
??????????????? jstr = "0" + jstr;
??????????? }
??????????? if (hour != hour2) {
??????????????? String hstr = Integer.toString(hour - hour2);
??????????????? //System.out.println("hstr="+hstr);
??????????????? if (hstr.length() == 1) {
??????????????????? hstr = "0" + hstr;
??????????????? }
??????????????? rsTime = hstr + ":" + jstr + ":00";
??????????? } else {
??????????????? rsTime = jstr + ":00";
??????????? }
??????? }
??????? return rsTime;
??? }
??? /**
???? * 計算兩個時間
???? *
???? * @param str
???? *??????????? 原時間,stradd,需增加的時間
???? * @return 計算后的時間
???? */
??? public String addTime(String str, String stradd) {
??????? String rsTime = "";
??????? int hour = 0;
??????? int sec = 0;
??????? int secadd = 0;
??????? int houradd = 0;
??????? str = trim(str);
??????? stradd = trim(stradd);
??????? if (str.length() == 5) {
??????????? hour = Integer.parseInt(str.substring(0, 2));
??????????? sec = Integer.parseInt(str.substring(3, 5));
??????? } else if (str.length() == 4) {
??????????? hour = Integer.parseInt(str.substring(0, 1));
??????????? sec = Integer.parseInt(str.substring(2, 4));
??????? }
??????? if (trim(stradd).length() == 5) {
??????????? secadd = Integer.parseInt(stradd.substring(0, 2));
??????? } else if (trim(stradd).length() == 4) {
??????????? secadd = Integer.parseInt(stradd.substring(0, 1));
??????? } else if (trim(stradd).length() == 7) {
??????????? houradd = Integer.parseInt(stradd.substring(0, 1));
??????????? secadd = Integer.parseInt(stradd.substring(2, 4));
??????? }
??????? int a = sec + secadd;
??????? if (a < 60) {
??????????? String stra = Integer.toString(a);
??????????? String strh = Integer.toString(hour + houradd);
??????????? if (stra.length() == 1) {
??????????????? stra = "0" + stra;
??????????? }
??????????? if (strh.length() == 1) {
??????????????? strh = "0" + strh;
??????????? } else if (Integer.parseInt(strh) > 24) {
??????????????? int h = Integer.parseInt(strh) / 24;
??????????????? strh = Integer.toString(h);
??????????????? if (h < 10) {
??????????????????? strh = "0" + Integer.toString(h);
??????????????? }
??????????? }
??????????? rsTime = strh + ":" + stra;
??????? } else if (a == 60) {
??????????? String strh = Integer.toString(hour + houradd + 1);
??????????? if (strh.length() == 1) {
??????????????? strh = "0" + strh;
??????????? } else if (Integer.parseInt(strh) > 24) {
??????????????? int h = Integer.parseInt(strh) / 24;
??????????????? strh = Integer.toString(h);
??????????????? if (h < 10) {
??????????????????? strh = "0" + Integer.toString(h);
??????????????? }
??????????? }
??????????? rsTime = strh + ":00";
??????? } else if (a > 60) {
??????????? int i = a / 60;
??????????? int j = a % 60;
??????????? String strj = Integer.toString(j);
??????????? if (strj.length() == 1) {
??????????????? strj = "0" + strj;
??????????? }
??????????? String strh = Integer.toString(hour + houradd + i);
??????????? if (strh.length() == 1) {
??????????????? strh = "0" + strh;
??????????? } else if (Integer.parseInt(strh) > 24) {
??????????????? int h = Integer.parseInt(strh) / 24;
??????????????? strh = Integer.toString(h);
??????????????? if (h < 10) {
??????????????????? strh = "0" + Integer.toString(h);
??????????????? }
??????????? }
??????????? rsTime = strh + ":" + strj;
??????????? if (j == 0) {
??????????????? rsTime = strh + ":00";
??????????? }
??????? }
??????? return rsTime;
??? }
??? /**
???? * 將UTF編碼的字符串轉化為GB2312編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param UTF
???? *??????????? 通過UTF編碼的字符串
???? * @return 通過GB2312編碼的字符串
???? */
??? public static String GB2312FromUTF(String UTF) {
??????? if (UTF == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(UTF.getBytes("UTF-8"), "GB2312");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將GB2312編碼的字符串轉化為UTF-8編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param GB2312
???? *??????????? 通過GB2312編碼的字符串
???? * @return 通過UTF-8編碼的字符串
???? */
??? public static String UTFFromGB2312(String GB2312) {
??????? if (GB2312 == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(GB2312.getBytes("GB2312"), "UTF-8");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? public static String GBKFromISO8859_1(String ISO8859_1) {
??????? if (ISO8859_1 == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(ISO8859_1.getBytes("ISO8859_1"), "GBK");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? public static String GBKFromUTF(String UTF) {
??????? if (UTF == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(UTF.getBytes("UTF-8"), "GBK");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將ISO8859_1編碼的字符串轉化為UTF-8編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param ISO8859_1str
???? *??????????? 通過ISO8859_1編碼的字符串
???? * @return 通過UTF-8編碼的字符串
???? */
??? public static String UTFFromISO8859_1(String ISO8859_1str) {
??????? return ISO8859_1str;
??? }
??? public static String UTFFromGBK(String GBK) {
??????? if (GBK == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(GBK.getBytes("GBK"), "UTF-8");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將UTF-8編碼的字符串轉化為ISO8859_1編碼的字符串,主要用來處理中文顯示亂碼的問題
???? *
???? * @param UTF
???? *??????????? 通過UTF編碼的字符串
???? * @return 通過ISO8859_1編碼的字符串
???? */
??? public static String ISO8859_1FromUTF(String UTFstr) {
??????? if (UTFstr == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(UTFstr.getBytes("UTF-8"), "ISO8859_1");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將GB2312編碼的字符串轉化為ISO8859_1編碼的字符串
???? *
???? * @param GBstr
???? *??????????? GB2312編碼的字符串
???? * @return ISO8859_1編碼的字符串
???? */
??? public static String ISO8859_1String(String GBstr) {
??????? if (GBstr == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(GBstr.getBytes("GB2312"), "ISO8859_1");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 將GB2312編碼的字符串轉化為ISO8859_1編碼的字符串
???? *
???? * @param GBstr
???? *??????????? GB2312編碼的字符串
???? * @return ISO8859_1編碼的字符串
???? */
??? public String ISO8859_1FromGB2312(String GBstr) {
??????? if (GBstr == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(GBstr.getBytes("GB2312"), "ISO8859_1");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? public static String ISO8859_1FromGBK(String GBK) {
??????? if (GBK == null) {
??????????? return "";
??????? } else {
??????????? try {
??????????????? return new String(GBK.getBytes("GBK"), "ISO8859_1");
??????????? } catch (Exception e) {
??????????????? e.printStackTrace();
??????????????? return null;
??????????? }
??????? }
??? }
??? /**
???? * 去除字符串兩端空格。
???? *
???? * @param str
???? *??????????? 需要處理的字符串
???? * @return 去掉了兩端空格的字符串,如果str 為 null 則返回 ""
???? */
??? public static String trim(String str) {
??????? if (str != null) {
??????????? return str.trim();
??????? } else {
??????????? return "";
??????? }
??? }
??? //? static public String mm_dd_yyyy = "MM-dd-yyyy HH:mm:ss";
??? /**
???? * 獲得當前年份
???? *
???? * @return 當前年份,格式如:2003
???? */
??? public static int getCurrentYear() {
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");
??????? return Integer.parseInt(sdf.format(new java.util.Date()));
??? }
??? /**
???? * 獲得當前月份
???? *
???? * @return 當前月份
???? */
??? public static int getCurrentMonth() {
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M");
??????? return Integer.parseInt(sdf.format(new java.util.Date()));
??? }
??? /**
???? * 獲得當前天
???? *
???? * @return 當前天
???? */
??? public static int getCurrentDay() {
??????? Calendar calendar = Calendar.getInstance();
??????? return calendar.get(Calendar.DATE);
??? }
??? public static String getCurrentDateTime() {
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd H:mm");
??????? return sdf.format(new Date());
??? }
??? /**
???? * 獲得形如 19770608 格式的當前年月日
???? *
???? * @return 當前年月日
???? */
??? public static String getSimpleCurrentDate() {
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyyMMdd HH:mm:ss");
??????? return sdf.format(new java.util.Date());
??? }
??? /**
???? * 返回兩個日期相差天數
???? *
???? * @param d1
???? *??????????? 日期
???? * @param d2
???? *??????????? 日期
???? * @return 天數
???? */
??? public int diffDate(Date d1, Date d2) {
??????? if ((d1 == null) || (d2 == null))
??????????? return 0;
??????? Calendar cal = Calendar.getInstance();
??????? // from Locale, has nothing to do with your input date format
??????? int zoneoffset = cal.get(Calendar.ZONE_OFFSET);
??????? int dstoffset = cal.get(Calendar.DST_OFFSET);
??????? // getTime() return absolute GMT time
??????? // compensate with the offsets
??????? long dl1 = d1.getTime() + zoneoffset + dstoffset;
??????? long dl2 = d2.getTime() + zoneoffset + dstoffset;
??????? int intDaysFirst = (int) (dl1 / (60 * 60 * 1000 * 24)); //60*60*1000
??????? int intDaysSecond = (int) (dl2 / (60 * 60 * 1000 * 24));
??????? return intDaysFirst > intDaysSecond ? intDaysFirst - intDaysSecond
??????????????? : intDaysSecond - intDaysFirst;
??? }
??? /**
???? * 將給定的時間轉換為格式是8位的字符串
???? *
???? * @param date
???? *??????????? 給定的時間
???? * @return 格式化后的字符串形式的時間
???? */
??? public String get8BitDate(java.util.Date date) {
??????? if (date == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyyMMdd");
??????? return sdf.format(date);
??? }
??? public String to_date(String strdate, String df) {
??????? if (strdate == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd HH:mm:ss");
??????? java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat(
??????????????? "M/d/yyyy H:m:s");
??????? Date d = null;
??????? try {
??????????? d = sdf1.parse(strdate);
??????? } catch (ParseException ex) {
??????????? ex.printStackTrace();
??????? }
??????? return sdf.format(d);
??? }
??? public static String get8BitString(String strDate) {
??????? if (strDate == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(
??????????????? "yyyyMMdd");
??????? Date d = null;
??????? try {
??????????? d = sdf.parse(strDate);
??????? } catch (ParseException ex) {
??????????? ex.printStackTrace();
??????? }
??????? return sdf2.format(d);
??? }
??? public static String get8ByteTo10Byte(String strDate) {
??????? if (strDate == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyyMMdd");
??????? java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? Date d = null;
??????? try {
??????????? d = sdf.parse(strDate);
??????? } catch (ParseException ex) {
??????????? ex.printStackTrace();
??????? }
??????? return sdf2.format(d);
??? }
??? public static String getStandedDateTime(String strDate) {
??????? if (strDate == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? Date d = null;
??????? try {
??????????? d = sdf.parse(strDate);
??????? } catch (ParseException ex) {
??????????? ex.printStackTrace();
??????? }
??????? return sdf2.format(d);
??? }
??? public static String getMonthDay(java.util.Date date) {
??????? if (date == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M月d日");
??????? return sdf.format(date);
??? }
??? public static String getHourMinute(java.util.Date date) {
??????? if (date == null) {
??????????? return "";
??????? }
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("H:mm");
??????? return sdf.format(date);
??? }
??? /**
???? * 判斷字符串是否符合日期格式
???? *
???? * @param str
???? *??????????? 字符串時間
???? * @return
???? */
??? public static boolean isDate(String strDate) {
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? sdf.setLenient(false);
??????? try {
??????????? sdf.parse(strDate);
??????????? return true;
??????? } catch (ParseException ex) {
??????????? return false;
??????? }
??? }
??? /**
???? * 判斷是否是數字
???? *
???? * @param str
???? * @return
???? */
??? public static boolean isNumber(String strNumber) {
??????? boolean bolResult = false;
??????? try {
??????????? Double.parseDouble(strNumber);
??????????? bolResult = true;
??????? } catch (NumberFormatException ex) {
??????????? bolResult = false;
??????? }
??????? return bolResult;
??? }
??? public String dateadd(Date strDate, int a) {
??????? String str = "";
??????? java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
??????????????? "yyyy-MM-dd");
??????? String strDate1 = sdf.format(strDate);
??????? int year = Integer.parseInt(strDate1.substring(0, 4));
??????? int month = Integer.parseInt(strDate1.substring(5, 7));
??????? int day = Integer.parseInt(strDate1.substring(8, 10));
??????? int md = getdayformonth(month);
??????? int i = (day + a) / md;
??????? int j = (day + a) % md;
??????? if (j == 0) {
??????????? i = i - 1;
??????????? j = md;
??????? }
??????? String strmon = "";
??????? String strday = "";
??????? String mondiff = "";
??????? if (i < 2) {
??????????? if (Integer.toString(j).length() == 1) {
??????????????? strday = "0" + Integer.toString(j);
??????????? } else {
??????????????? strday = Integer.toString(j);
??????????? }
??????????? if ((month + i) > 12) {
??????????????? int yeardiff = (month + i) / 12;
??????????????? int monthmod = (month + i) % 12;
??????????????? mondiff = Integer.toString(monthmod);
??????????????? if (Integer.toString(monthmod).length() == 1) {
??????????????????? mondiff = "0" + Integer.toString(monthmod);
??????????????? }
??????????????? str = Integer.toString(year + yeardiff) + "-" + mondiff + "-"
??????????????????????? + strday;
??????????? } else {
??????????????? strmon = Integer.toString(month + i);
??????????????? if (Integer.toString(month + i).length() == 1) {
??????????????????? strmon = "0" + Integer.toString(month + i);
??????????????? }
??????????????? str = Integer.toString(year) + "-" + strmon + "-" + strday;
??????????? }
??????? } else {
??????????? //主要判斷假如天數,月份溢出的處理,
??????? }
??????? return str;
??? }
??? public int getdayformonth(int month) {
??????? int a = 0;
??????? switch (month) {
??????? case 1:
??????????? a = 31;
??????????? break;
??????? case 2:
??????????? a = 28;
??????????? break;
??????? case 3:
??????????? a = 31;
??????????? break;
??????? case 4:
??????????? a = 30;
??????????? break;
??????? case 5:
??????????? a = 31;
??????????? break;
??????? case 6:
??????????? a = 30;
??????????? break;
??????? case 7:
??????????? a = 31;
??????????? break;
??????? case 8:
??????????? a = 31;
??????????? break;
??????? case 9:
??????????? a = 30;
??????????? break;
??????? case 10:
??????????? a = 31;
??????????? break;
??????? case 11:
??????????? a = 30;
??????????? break;
??????? case 12:
??????????? a = 31;
??????????? break;
??????? default:
??????? }
??????? return a;
??? }
??? public String addOneDay(String strDate) //YYYY-MM-DD
??? {
??????? int[] standardDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
??????? int[] leapyearDays = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
??????? int y = Integer.parseInt(strDate.substring(0, 4));
??????? int m = Integer.parseInt(strDate.substring(4, 6));
??????? int d = Integer.parseInt(strDate.substring(6, 8)) + 1;
??????? int maxDateCount = 0;
??????? System.out.println(y);
??????? System.out.println(m);
??????? System.out.println(d);
??????? if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
??????????? maxDateCount = leapyearDays[m - 1];
??????? } else {
??????????? maxDateCount = standardDays[m - 1];
??????? }
??????? if (d > maxDateCount) {
??????????? d = 1;
??????????? m++;
??????? }
??????? if (m > 12) {
??????????? m = 1;
??????????? y++;
??????? }
??????? java.text.DecimalFormat yf = new java.text.DecimalFormat("0000");
??????? java.text.DecimalFormat mdf = new java.text.DecimalFormat("00");
??????? return yf.format(y) + mdf.format(m) + mdf.format(d);
??? }
??? public static String subOneDay(String strDate) {
??????? //YYYY-MM-DD
??????? int[] standardDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
??????? int[] leapyearDays = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
??????? int y = Integer.parseInt(strDate.substring(0, 4));
??????? int m = Integer.parseInt(strDate.substring(4, 6));
??????? int d = Integer.parseInt(strDate.substring(6, 8)) - 1;
??????? int maxDateCount = 0;
??????? System.out.println(y);
??????? System.out.println(m);
??????? System.out.println(d);
??????? if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
??????????? maxDateCount = leapyearDays[m - 1];
??????? } else {
??????????? maxDateCount = standardDays[m - 1];
??????? }
??????? if (d > maxDateCount) {
??????????? d = 1;
??????????? m++;
??????? }
??????? if (m > 12) {
??????????? m = 1;
??????????? y++;
??????? }
??????? java.text.DecimalFormat yf = new java.text.DecimalFormat("0000");
??????? java.text.DecimalFormat mdf = new java.text.DecimalFormat("00");
??????? return yf.format(y) + mdf.format(m) + mdf.format(d);
??? }
??? public static void main(String[] argv) {
??????? System.out.println(Tools.getMonthDay(new java.util.Date()));
??????? System.out.println(Tools.getHourMinute(new java.util.Date()));
??????
??? }
}
本Blog純屬個人學習、工作需要,記錄相關資料。請不要發表任何有人身攻擊的言論,謝謝! www.zhipsoft.cn
posted on 2006-09-20 18:10
ZhipSoft 閱讀(274)
評論(0) 編輯 收藏