java 時間工具類

dy223 9年前發布 | 7K 次閱讀 Java

import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.trs.gab.beans.AppPhrasseDataResult;
import com.trs.gab.beans.DicDataModel;

import sun.misc.UCEncoder;
/**

  • 時間工具類
  • */
    public class DateUtil {

    /**

    • 返回數據庫中以'YYYY-MM-DD HH24:MI:SS'格式表示當前時間的字符串
    • 用法:to_date(?,'YYYY-MM-DD HH24:MI:SS')
    • ?設置strNowtime
    • @return */
      public static String getNowTimeStr(){
      Calendar m_cal = Calendar.getInstance();
      String strNowtime = m_cal.get(Calendar.YEAR) + "-"

           + (m_cal.get(Calendar.MONTH) + 1) + "-"  
           + m_cal.get(Calendar.DAY_OF_MONTH) + " "  
           + m_cal.get(Calendar.HOUR_OF_DAY) + ":"  
           + m_cal.get(Calendar.MINUTE) + ":" + m_cal.get(Calendar.SECOND);  
      

      return strNowtime;
      }

      /**

    • 獲得當前時間,格式yyyy-MM-dd hh:mm:ss
    • @param format
    • @return */
      public static String getCurrentDateTime() {
      return getCurrentDate("yyyy-MM-dd HH:mm:ss");
      }

      /**

    • 獲得當前時間,格式自定義
    • @param format
    • @return */
      public static String getCurrentDate(String format) {
      Calendar day = Calendar.getInstance();
      day.add(Calendar.DATE, 0);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(day.getTime());
      return date;
      }

      /**

    • 獲得昨天時間,格式自定義
    • @param format
    • @return */
      public static String getYesterdayDate(String format) {
      Calendar day = Calendar.getInstance();
      day.add(Calendar.DATE, -1);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(day.getTime());
      return date;
      }

      /**

    • @param date1
    • 需要比較的時間 不能為空(null),需要正確的日期格式 ,如:2009-09-12
    • @param date2
    • 被比較的時間 為空(null)則為當前時間
    • @param stype
    • 返回值類型 0為多少天,1為多少個月,2為多少年
    • @return 舉例: compareDate("2009-09-12", null, 0);//比較天
    • compareDate("2009-09-12", null, 1);//比較月
    • compareDate("2009-09-12", null, 2);//比較年 */
      public static int compareDate(String startDay, String endDay, int stype) {
      int n = 0;
      String[] u = { "天", "月", "年" };
      String formatStyle = stype == 1 ? "yyyy-MM" : "yyyy-MM-dd";

      endDay = endDay == null ? getCurrentDate("yyyy-MM-dd") : endDay;

      DateFormat df = new SimpleDateFormat(formatStyle);
      Calendar c1 = Calendar.getInstance();
      Calendar c2 = Calendar.getInstance();
      try {
      c1.setTime(df.parse(startDay));
      c2.setTime(df.parse(endDay));
      } catch (Exception e3) {
      System.out.println("wrong occured");
      }
      // List list = new ArrayList();
      while (!c1.after(c2)) { // 循環對比,直到相等,n 就是所要的結果
      // list.add(df.format(c1.getTime())); // 這里可以把間隔的日期存到數組中 打印出來
      n++;
      if (stype == 1) {
      c1.add(Calendar.MONTH, 1); // 比較月份,月份+1
      } else {
      c1.add(Calendar.DATE, 1); // 比較天數,日期+1
      }
      }
      n = n - 1;
      if (stype == 2) {
      n = (int) n / 365;
      }
      // System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n);
      return n;
      }

      /**

    • 判斷時間是否符合時間格式 */
      public static boolean isLegalDateString(String date, String dateFormat) {
      if (date != null) {

       java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(  
               dateFormat);  
       format.setLenient(false);  
       try {  
           format.format(format.parse(date));  
       } catch (ParseException e) {  
           return false;  
       }  
       return true;  
      

      }
      return false;
      }

      /**

    • 實現給定某日期,判斷是星期幾 date:必須yyyy-MM-dd格式 */
      public static String getWeekday(String date) {
      SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
      SimpleDateFormat sdw = new SimpleDateFormat("E");
      Date d = null;
      try {

       d = sd.parse(date);  
      

      } catch (ParseException e) {

       e.printStackTrace();  
      

      }
      return sdw.format(d);
      }

      /**

    • 用來全局控制 上一周,本周,下一周的周數變化 */
      private static int weeks = 0;

      /**

    • 獲得當前日期與本周一相差的天數 */
      private static int getMondayPlus() {
      Calendar cd = Calendar.getInstance();
      // 獲得今天是一周的第幾天,星期日是第一天,星期二是第二天......
      int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
      if (dayOfWeek == 1)

       return -6;  
      

      else

       return 2 - dayOfWeek;  
      

      }

      /**

    • 獲得本周星期一的日期 */
      public static String getCurrentMonday(String format) {
      weeks = 0;
      int mondayPlus = getMondayPlus();
      Calendar currentDate = Calendar.getInstance();
      currentDate.add(Calendar.DATE, mondayPlus);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(currentDate.getTime());
      return date;
      }

      /**

    • 獲得上周星期一的日期 /
      public static String getPreviousMonday(String format) {
      weeks--;
      int mondayPlus = getMondayPlus();
      Calendar currentDate = Calendar.getInstance();
      currentDate.add(GregorianCalendar.DATE, mondayPlus + 7
      weeks);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(currentDate.getTime());
      return date;
      }

      /**

    • 獲得下周星期一的日期 /
      public static String getNextMonday(String format) {
      weeks++;
      int mondayPlus = getMondayPlus();
      // GregorianCalendar currentDate = new GregorianCalendar();
      Calendar currentDate = Calendar.getInstance();
      currentDate.add(GregorianCalendar.DATE, mondayPlus + 7
      weeks);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(currentDate.getTime());
      return date;
      }

      /**

    • 獲得相應周的周日的日期 此方法必須寫在getCurrentMonday,getPreviousMonday或getNextMonday方法之后 /
      public static String getSunday(String format) {
      int mondayPlus = getMondayPlus();
      Calendar currentDate = Calendar.getInstance();
      currentDate.add(Calendar.DATE, mondayPlus + 7
      weeks + 6);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(currentDate.getTime());
      return date;
      }

      /**

    • method 將字符串類型的日期轉換為一個timestamp(時間戳記java.sql.Timestamp)
    • @param dateString
    • 需要轉換為timestamp的字符串
    • @return dataTime timestamp */
      public final static java.sql.Timestamp string2Time(String dateString) {
      DateFormat dateFormat;
      dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);// 設定格式
      dateFormat.setLenient(false);
      java.util.Date date = null;
      try {

       date = dateFormat.parse(dateString);  
      

      } catch (ParseException e) {

       // TODO Auto-generated catch block  
       e.printStackTrace();  
      

      }
      // java.sql.Timestamp dateTime = new java.sql.Timestamp(date.getTime());
      return new java.sql.Timestamp(date.getTime());// Timestamp類型,timeDate.getTime()返回一個long型
      }

      /**

    • method 將字符串類型的日期轉換為一個Date(java.sql.Date)
    • @param dateString
    • 需要轉換為Date的字符串
    • @return dataTime Date */
      public final static java.sql.Date string2Date(String dateString) {
      DateFormat dateFormat;
      dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
      dateFormat.setLenient(false);
      java.util.Date date = null;
      try {

       date = dateFormat.parse(dateString);  
      

      } catch (ParseException e) {

       // TODO Auto-generated catch block  
       e.printStackTrace();  
      

      }
      // java.sql.Date dateTime = new java.sql.Date(date.getTime());// sql類型
      return new java.sql.Date(date.getTime());
      }

      // 記錄考勤, 記錄遲到、早退時間
      public static String getState() {
      String state = "正常";
      DateFormat df = new SimpleDateFormat("HH:mm:ss");
      Date d = new Date();
      try {

       Date d1 = df.parse("08:00:00");  
       Date d2 = df.parse(df.format(d));  
       Date d3 = df.parse("18:00:00");  
      
       int t1 = (int) d1.getTime();  
       int t2 = (int) d2.getTime();  
       int t3 = (int) d3.getTime();  
       if (t2 < t1) {  
      
           long between = (t1 - t2) / 1000;// 除以1000是為了轉換成秒  
           long hour1 = between % (24 * 3600) / 3600;  
           long minute1 = between % 3600 / 60;  
      
           state = "遲到 :" + hour1 + "時" + minute1 + "分";  
      
       } else if (t2 < t3) {  
           long between = (t3 - t2) / 1000;// 除以1000是為了轉換成秒  
           long hour1 = between % (24 * 3600) / 3600;  
           long minute1 = between % 3600 / 60;  
           state = "早退 :" + hour1 + "時" + minute1 + "分";  
       }  
       return state;  
      

      } catch (Exception e) {

       return state;  
      

      }

      }

      /**

    • 數值型的時間改為字符串型時間
    • @param time
    • @return */
      public static String getTime(long time) {
      try {

       Date date = new Date(time);  
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//    
       String strdate = sdf.format(date);  
       return strdate;  
      

      } catch (Exception e) {

       e.printStackTrace();  
       return "0";  
      

      }
      }

      /**

    • 傳入"yyyy-MM-dd HH:mm:ss"格式字符串,傳出從1970 年~~~ 至dateString表示時刻之間的ms。
    • @return */
      public static long getTimeMillis(String dateString){
      long timeMillis = 0;
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      try {

       Date date= sdf.parse(dateString);  
       timeMillis = date.getTime();  
      

      } catch (ParseException e) {
      }
      return timeMillis;
      }

      /**

    • 獲得后N天的時間,格式自定義
    • @param format
    • @return */
      public static String getDelayDayDate(String format,int delay) {
      Calendar day = Calendar.getInstance();
      day.add(Calendar.DATE, delay);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(day.getTime());
      return date;
      }

      /**

    • 獲得后N小時的時間,格式自定義
    • @param format
    • @param delay
    • @return */
      public static String getDelayHourDate(String format,int delay){
      Calendar day = Calendar.getInstance();
      day.add(Calendar.HOUR, delay);
      SimpleDateFormat sdf = new SimpleDateFormat(format);// "yyyy-MM-dd"
      String date = sdf.format(day.getTime());
      return date;
      }

      /**

    • @param date1
    • 需要比較的時間 不能為空(null),需要正確的日期格式 ,如:2009-09-12 16:24
    • @param date2
    • 被比較的時間 為空(null)則為當前時間
    • @param stype 0為比較小時,1為比較分鐘。
    • @return
      */
      public static int compareTime(String startDay, String endDay,int stype) {
      int n = 0;
      String formatStyle = "yyyy-MM-dd HH:mm";

      endDay = endDay == null ? getCurrentDate("yyyy-MM-dd HH:mm") : endDay;

      DateFormat df = new SimpleDateFormat(formatStyle);
      Calendar c1 = Calendar.getInstance();
      Calendar c2 = Calendar.getInstance();
      try {

       c1.setTime(df.parse(startDay));  
       c2.setTime(df.parse(endDay));  
      

      } catch (Exception e3) {

       System.out.println("wrong occured");  
      

      }
      // List list = new ArrayList();
      while (!c1.after(c2)) { // 循環對比,直到相等,n 就是所要的結果

       // list.add(df.format(c1.getTime())); // 這里可以把間隔的日期存到數組中 打印出來  
       n++;  
       if(stype == 0){  
           c1.add(Calendar.HOUR, 1); // 比較月份,月份+1  
       }else{  
           c1.add(Calendar.MINUTE, 1); // 比較月份,月份+1  
       }  
      

      }
      n = n - 1;
      return n;
      }
      /**

    • 獲取詞典(牛津英漢詞典)音標的信息 /
      public static String getYin(String content)
      {
      String result="";
      String reg="<font color=([\"'])#F17D1F([\"']) size=4>(?:.
      ?)</font>";
      //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";
      String str="<font color=red>china</font><font color=green>china</font>";
      Pattern p=Pattern.compile(reg);
      Matcher m=p.matcher(content);
      int i=1;
      while(m.find()){
       System.out.println(m.group(0));  
       result=result+"<br>"+"<font color=#F17D1F>"+i+"</font>"+m.group(0).replaceAll("size=4", "style=\"font-family:Arial Unicode Ms\";");  
       i++;  
      
      }
      if(i==2)
      {
       String r="<font color=#F17D1F>";  
       int x=result.indexOf(r);  
       result=result.substring(x+r.length()+1);  
      
      }
      return result;
      }
      /**
    • 獲取詞典(字典)中的信息、 /
      public static String getFont(String content)
      {
      String result="";
      String reg="(?:.
      ?)<br>";
      //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";
      String str="你<br>nǐ<br>稱對方,多稱指一個人,有時也指稱若干人:你廠。你方。<br>泛指任何人:你死我活。<br>您<br><br>筆畫數:7;<br>部首:亻;<br>筆順編號:3235234<br><br><br>";
      Pattern p=Pattern.compile(reg);
      Matcher m=p.matcher(content);
      int i=1;
      while(m.find()){

       System.out.println(m.group(0));  
       if(!m.group(0).equals("<br>"))  
       {  
       result=result+i+"、   "+m.group(0);  
       i++;  
       }  
      
      

      }

      return result;
      }
      public static String getDemo(String color,String content)
      {
      String result="";
      String reg="<font color="+color+">(?:.*?)</font>";
      //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";
      String str="<font color=red>china</font><font color=green>china</font>";
      Pattern p=Pattern.compile(reg);
      Matcher m=p.matcher(content);

      if(color.equals("blue"))
      {

       int i=1;  
       while(m.find()){  
           System.out.println(m.group(0));  
           result=result+"<br> <font color=blue>"+i+" </font>"+m.group(0).replaceAll("size=4", "");  
           i++;  
       }  
      

      }
      else
      {

        while(m.find()){  
            System.out.println(m.group(0));  
            result=result+"<br>"+m.group(0).replaceAll("size=4", "");  

        }  

    }  
    return result;  
}  
public static String getUse(String content)  
{  
    String result="";  
    String reg="</font>(?:.*?)<br>";  
    //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";  
    String str="<font color=red>china</font><font color=green>china</font>";  
    Pattern p=Pattern.compile(reg);  
    Matcher m=p.matcher(content);  


        while(m.find()){  
            System.out.println(m.group(0));  
            result=result+m.group(0).replaceAll("size=4", "");  

        }  


    return result;  
}  
public static String[] getContent(String content,String prefex)  
{  
    String result[]=new String[3];  
    String reg=prefex+"(?:.*?)</div>";  
    //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";  
    String str="<font color=red>china</font><font color=green>china</font>";  
    Pattern p=Pattern.compile(reg);  
    Matcher m=p.matcher(content);  

    int count=0;  
        while(m.find()){  
            if(count<3)  
            {  
                result[count]=m.group(0);  
            }  
            count++;  
        }  

    return result;  
}  
public static boolean getContent(String content,String prefex,String reg)  
{  
    boolean result=false;  
    Pattern p=Pattern.compile(reg);  
    Matcher m=p.matcher(content);  


        while(m.find()){  

            result=true;  
        }  
        return result;  
}  
public static String getC(String content,String prefex)  
{  
    System.out.println("未處理的t內容"+content);  
    int start=content.indexOf(prefex);  
    String result="";  
    if(start!=-1)  
    {  
    result=content.substring(start, content.length()-1);  
    return result.replaceAll("</div>","")+"</div>";  
    }  
    else  
    {  
        result=content;  
        return result;  
    }  



}  
public static String getContent(String content)  
{  
    String s_content[]=new String[2];  
    for(int i=0;i<2;i++)  
    {  
        s_content[i]=content;  
    }  
    String v=getContent(s_content[0],"<div id=v>")[0];  

    String c=getContent(s_content[1],"<div id=c>")[0];  
    if(!getContent(c, "<div id=c>", "[\u4E00-\u9FA5]"))  
    {  
        c=getC(s_content[1],"<div id=c>");  
    }  
    return c+v;  
}  

public static String replaceTag(String content)  
{  
    return content.replaceAll("<br>", " ").replaceAll("bword://", "").replaceAll("\\\\n", "").replaceAll("<img.*>.*</img>","").replaceAll("<img.*/>","");  
}  
 /**  
  * 獲取現在時間  
  * @return返回字符串格式 yyyy-MM-dd HH:mm:ss  
  */   
 public static String getStringDate() {    
  Date currentTime = new Date();    
  SimpleDateFormat formatter = new SimpleDateFormat("M月d日");    
  String dateString = formatter.format(currentTime);    
  return dateString;    
 }  
public static String getNum(String content)  
{  
    String result="";  
    String reg="(?:.*?)。";  

    //String str="<td class=\"longtd\" title=\"VRBZ3\">VRBZ3</td>";  
    String str="(1)在體積、面積、數量、力量、強度等方面不及一般的或不及比較的對象(跟‘大’相對):~河|鞋~了點兒|我比你~一歲|聲音太~。(2)短時間地:~坐|~住。(3)排行最末的:~兒子|他是我的~弟弟。(4)年紀小的人:一家大~|上有老,下有~。(5)指妾①。(6)謙辭,稱自己或與自己有關的人或事物:~弟|~店。 …小白菜@(~ ";  
    Pattern p=Pattern.compile(reg);  
    Matcher m=p.matcher(content);  


        while(m.find()){  
        if(m.group(0).length()>3)  
        {  
            System.out.println(m.group(0));  
            result=result+m.group(0)+"<br>";  
         }  
        else  
        {  
            result=content;  
        }  
        }  
    if(result.length()==0)  
    {  
        result=content;  
    }  

    return result;  
}  
/** 
 * @param args 
 * @return  
 * @return  
 */  
public static String getContentSource(String contentSource,String tag,String tagId,int wordSize)  
{  
    Document doc;  
    String linkText="";  
    //System.out.println("未處理的文本內容:"+contentSource);  
    try {  
        doc = Jsoup.parse(contentSource);  

        Element content = doc.getElementById(tagId);  
        if(content!=null){  
        Elements texts = content.select(tag + "[id=" + tagId + "]");  
        for (Element link : texts) {  

            linkText = linkText + link.text();  
        }  
        }  
        else  
        {  
            Element t = doc.getElementById("t");  
            if(t!=null){  
            Elements texts = t.select("div[id=t]");  
            for (Element link : texts) {  

                linkText = linkText + link.text();  
            }  
            }  
            else  
            {  
                linkText=contentSource;  
            }  
        }  
    } catch (Exception e) {  

        e.printStackTrace();  
    }  
    //System.out.println("得到的文本內容:"+linkText);  
    if(linkText.length()>300)  
    {  
        linkText=linkText.substring(0, wordSize)+"...";  
    }  
    return linkText;  
}  

public static String getContentText(String contentSource,String tag,String tagId)  
{  
    Document doc;  
    String linkText="";  
    //System.out.println("未處理的文本內容:"+contentSource);  
    try {  
        doc = Jsoup.parse(contentSource);  

        Element content = doc.getElementById(tagId);  
        if(content!=null){  
        Elements texts = content.select(tag + "[id=" + tagId + "]");  
        for (Element link : texts) {  

            linkText = linkText + link.text();  
        }  
        }  

    } catch (Exception e) {  

        e.printStackTrace();  
    }  
    //System.out.println("得到的文本內容:"+linkText);  
    return linkText;  
}  
/** 
 * 得到div id=m的內容 
 * @param contentSource 
 * @param tag 
 * @param tagId 
 * @return 
 */  
public static String getContentSourceOfm(String contentSource,String tag,String tagId)  
{  
    Document doc;  
    String linkText="";  
    //System.out.println("未處理的文本內容:"+contentSource);  
    try {  
        doc = Jsoup.parse(contentSource);  

        Element content = doc.getElementById(tagId);  
        if(content!=null){  
        Elements texts = content.select(tag + "[id=" + tagId + "]");  
        for (Element link : texts) {  

            linkText = linkText + link.text();  
        }  
        }  
        else  
        {  
            Element t = doc.getElementById("t");  
            if(t!=null){  
            Elements texts = t.select("div[id=t]");  
            for (Element link : texts) {  

                linkText = linkText + link.text();  
            }  
            }  
            else  
            {  
                linkText=contentSource;  
            }  
        }  
    } catch (Exception e) {  

        e.printStackTrace();  
    }  
    //System.out.println("得到的文本內容:"+linkText);  
    if(linkText.length()>300)  
    {  
        linkText=linkText.substring(0, 300)+"...";  
    }  
    return linkText;  
}  
public static boolean isHasRelativeWordlink(String content,String tag)  
{  
    if(content.contains(tag))  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  
/** 
 * 得到相關詞條的解釋 
 * @param content 
 * @param request 
 * @param tag 
 * @return 
 */  
public static String getRelativeWordlink(String content,HttpServletRequest request,String tag)  
{  
    String param[]=content.split(tag);  
    //URLEncoder encoder=null;  


    content="參考詞條:<a href="+request.getContextPath()+"/baikeSearchRelative.trs?searchWord="+param[1].replaceAll("\\\\n", "")+"  target=\"_blank\">"+param[1].replaceAll("\\\\n", "")+"</a>";  
    return content;  
}  

/** 
 * 得到相關詞條的解釋 
 * @param content 
 * @param request 
 * @param tag 
 * @return 
 */  
public static DicDataModel getRelativeWordContent(String content,String tag,int type)  
{  


    String param[]=content.split(tag);  
    //URLEncoder encoder=null;  
    DicDataModel dataModel=null;  

    AppPhrasseDataResult appPhrasseDataResult=null;  

    appPhrasseDataResult=new AppPhrasseDataResult();  

    try {  
        dataModel=appPhrasseDataResult.getBaikeInfo("TB_BAIKE", "name="+param[1].replaceAll("\\\\n", ""));  
    } catch (Exception e) {  

        e.printStackTrace();  
    }  
    if(type==0)  
    {  
        dataModel.setContent(DateUtil.getContentSource(dataModel.getContent(), "", "c",300),new Boolean("true"));  
    }  
    else  
    {  

        dataModel.setContent(dataModel.getContent(),new Boolean("true"));  

    }  
    return dataModel;  
}  
/** 
 * 將相關詞條添加到字符串數組中 
 * @param contentSource 
 * @param request 
 * @return 
 */  
public static String[] getRelativeWordlink(String contentSource,HttpServletRequest request)  
{Document doc;  
String relativeWord[]=null;  
int count=0;  
try {  
    doc = Jsoup.parse(contentSource);  

    Element content = doc.getElementById("m");  
    //Elements links = content.getElementsByTag("td");  
    if(content!=null){  
    Elements links = content.select("a");  
    relativeWord=new String[links.size()];  
    for (Element link : links) {  

      String linkText = link.text();  

        if(linkText.contains("@"))  
        {  
          relativeWord[count]=linkText;  
        }  
        count++;  
    }  
    }  
} catch (Exception e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}  
    return relativeWord;  
}  
/** 
 * 將相關詞條的細纜頁鏈接加上 
 * @param content 
 * @param relativeWord 
 * @param request 
 * @return 
 */  
public static String replaceRelativeWord(String content,String relativeWord[],HttpServletRequest request)  
{  
    for(int i=0;i<relativeWord.length;i++)  
    {   String c=relativeWord[i];  
        if(StringUtils.isNotEmpty(c))  
        {  
        String r=relativeWord[i].substring(1);  
        content=content.replaceFirst(r, request.getContextPath()+"/baikeSearchRelative.trs?searchWord="+r);  
        }  
        }  
    return content;  
}  
/** 
 * 得到詞條的目錄鏈接: 
 * 默認取前5條鏈接 
 * @param content 
 * @return 
 */  
public static String getLink(String contentSource, String linkContent,int count,String tag) {  
    Document doc;  
    String linkText = "";  
    try {  
        doc = Jsoup.parse(contentSource);  

        Element content = doc.getElementById(tag);  
        if(content!=null){  
        Elements links = content.select("p");  

            int i=1;  
            for (Element link : links) {  
                String href=getChildlink(link.outerHtml());  
                if(StringUtils.isNotEmpty(href))  
                {  
               linkText = linkText +"<p>"+href+"</p>";  
                }  
               if(i==count)  
                {  
                    break;  
                }  

                i++;  
            }  
            /*if(i<count) 
            { 
                linkText = linkText+getLinkOfm(linkContent, count-i,"m"); 
            }*/  
        }  

        else  
        {  
            linkText=contentSource;  
        }  
    } catch (Exception e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
    return linkText;  
}  
/** 
 * 鏈接的數量不足時增加m標簽的內容 
 * @param contentSource 
 * @param linkContent 
 * @param count 
 * @param tag 
 * @return 
 */  
public static String getLinkOfm(String linkContent,int count,String tag) {  
    Document doc;  
    String linkText = "";  
    try {  
        doc = Jsoup.parse(linkContent);  

        Element content = doc.getElementById(tag);  
        if(content!=null){  
        Elements links = content.select("p");  

            int i=0;  
            for (Element link : links) {  
               linkText = linkText +"<p>"+ getChildlink(link.outerHtml())+"</p>";  
                if(i==count)  
                {  
                    break;  
                }  

                i++;  
            }  

        }  

        else  
        {  
            linkText=linkContent;  
        }  
    } catch (Exception e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
    return linkText;  
}  
/** 
 * 獲取鏈接的子鏈接的第一個鏈接 
 * @param contentSource 
 * @return 
 */  
public static String getChildlink(String contentSource) {  

    Document doc;  
    String linkText = null;  
    try {  
        doc = Jsoup.parse(contentSource);  

        Elements links = doc.select("a");  
        if (links != null) {  
            int i = 0;  
            for (Element link : links) {  
                if (i == 0) {  
                    linkText = link.outerHtml();  
                }  
                i++;  
            }  
        } else {  
            linkText = contentSource;  
        }  
    } catch (Exception e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
    return linkText;  
}  
public static int getNowTime(int type){  
    Calendar m_cal = Calendar.getInstance();  
    if(type==1)  
    {  
        return m_cal.get(Calendar.MONTH)+1;  
    }  
    else  
        return m_cal.get(Calendar.DAY_OF_MONTH);  
}  
public static void main(String[] args) {  

System.out.println(getContentText("<div id=t><p></div>\n","div","t"));      
}  

} </pre>

 本文由用戶 dy223 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!