首页 > 编程语言 > 详细

java 时间工具类

时间:2015-03-23 11:37:32      阅读:235      评论:0      收藏:0      [点我收藏+]

原文:java 时间工具类

源代码下载地址:http://www.zuidaima.com/share/1550463708908544.htm

java 时间工具类


package com.zuidaima.trs.gab.util;

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;
/**
 * 时间工具类
 * @author www.zuidaima.com
 *
 */
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"));	
	}

}


java 时间工具类

原文:http://blog.csdn.net/springmvc_springdata/article/details/44559625

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!