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"));       
    }   
   
}  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10280.html

(0)
上一篇 2021年7月19日 10:09
下一篇 2021年7月19日 10:09

相关推荐

发表回复

登录后才能评论