Время выпуска различных форматов на веб-странице извлекается, и время выпуска выражается в обычном формате "Yyyy-MM-DD HH: MM: SS". Вы можете только попытаться достичь точности, но поскольку формат времени выпуска сети очень гибкий, он не может быть на 100% правильным.
пакет whu.extract.pubtime.core; Импорт java.util.arraylist; import java.util.calendar; import java.util.collections; импорт java.util.list; import java.util.regex.matcher; импорт java.util.regex.pattern; Импорт whu.utils.timeutil; /*** Создано 13 марта 2014 года в 14:49:05* @description Получите время публикации веб -страницы*/public class fetchpubtime {/** представляет 8 последовательных дат в URL, например, http://www.baidu.com/20140311/2356.html*/private static stricle_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer_wer.com/20140311/2356.html. "([-|/| _] {1} 20 // d {6})"; /** представляет дату, разделенную-или//с годом, месяцем и датой, например, http://www.baidu.com/2014-3-11/2356.html*/private Static String url_reg_sep_ymd = "([-|/| _] {1} 20 // d {2} [-|/| _] {1} // d {1,2})"; /** Указывает, что даты, разделенные - или/, только год и месяц, например, http://www.baidu.com/2014-3/2356.html*/частная статическая строка url_reg_sep_ym = "([-|/| _] {1} 20 // d {2} [-|/| _] {1} // d {1,2})"; Частный статический календарь ток = календарь.getinstance (); / ** Правильное отформатированное время регулярное выражение*/ частная статическая строка righttimereg = "^((// d {2} (([02468] [048]) | ([13579] [26])) [//-///// s]? ((0? [13578]) | (1 [02])) [//-////// s]? ((0? [1-9]) | ([1-2] [0-9]) | (3 [01]))) | ((0? [469]) | ( 11)) [//-///// s]? ((0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [//-///// s]? ((0? 1-9]) | ([1-2] [0-9])))) | (// d {2} (([02468] [1235679]) | ([13579] [01345789 ])) [//-/////// s]? ((((0? [13578]) | (1 [02])) [//-/////// s]? ((0? [1-9]) | ([1-2] [0-9]) | (3 [01]))) | ((0? [469]) | (11)) [//-////// s]? ((0? [1-9]) | ([1-2] [0-9]] ) | (30)) | (0? 2 [//-///// s]? ((0? [1-9]) | (1 [0-9]) | (2 [0-8]))))))))))))))))? $ "; / ** * @param url * @param urlcontent * @return */ public static String getPubtimeVarious (string url, string urlcontent) {String pubtime = getPubtimeFromUrl (url); // не в ссылке, сопоставление if (pubtime == null) {if (urlcontent! = Null &&! Urlcontent.trim (). Equals ("")) вернуть экстрактабедат (urlcontent); } return pubtime; } / ** Извлечь время публикации из URL и вернуть yyyy-mm-dd HH: MM: SS-форматированная строка * @param url * @return * / public Static String getPubtimeFromurl (String url) {pattern p_whole = pattern.compile (url_reg_whole); Matchter M_WHOLE = P_WHOLE.Matcher (url); if (m_whole.find (0) && m_whole.groupcount ()> 0) {string time = m_whole.group (0); Time = time.substring (1, time.length ()); // Каждый шаг не может превышать текущее время, если (current.compareto (timeutil.strtocalendar (время, "yyyymmdd"))> = 0) {return Time.substring (0,4)+"-"+time.substring (4,6)+"-"+time.substring (6,8)+"+"+"00:00:00"; }} p_whole = null; m_whole = null; Шаблон p_sep = pattern.compile (url_reg_sep_ymd); Matchter m_sep = p_sep.matcher (url); if (m_sep.find (0) && m_sep.groupcount ()> 0) {string time = m_sep.group (0); Time = time.substring (1, time.length ()); String [] seg = time.split ("[-|/| _] {1}"); Календарь theTime = calendar.getInstance (); theTime.set (calendar.year, integer.parseint (seg [0])); theTime.set (calendar.month, integer.parseint (seg [1])); theTime.set (calendar.day_of_month, integer.parseint (seg [2])); if (current.compareto (theTime)> = 0) {return seg [0]+"-"+seg [1]+"-"+seg [2]+""+"00:00:00"; }} p_sep = null; m_sep = null; Шаблон p_sep_ym = pattern.compile (url_reg_sep_ym); Matchter m_sep_ym = p_sep_ym.matcher (url); if (m_sep_ym.find (0) && m_sep_ym.groupcount ()> 0) {string time = m_sep_ym.group (0); Time = time.substring (1, time.length ()); Календарь theTime = calendar.getInstance (); String [] seg = time.split ("[-|/| _] {1}"); theTime.set (calendar.year, integer.parseint (seg [0])); theTime.set (calendar.month, integer.parseint (seg [1])); theTime.set (calendar.day_of_month, 1); if (current.compareto (theTime)> = 0) {return seg [0]+"-"+seg [1]+"-"+"+" 01 "+" "+" 00:00:00 ";}} Возврат nul Форма 2013-12-19 15:48:33 или 2013-12-19 или 2012/3/05* Список совпадений = null; День) ", Pattern.case_insensity | pattern.multiline); // Если это только год, месяц, день, день, час, минута, второй, второй, затем следуйте следующей шаблоне p = pattern.compile (" (20 // d {2} [-/] // d {1,2} [/] // d {1,2) | (20 // d {2 месяца, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц, месяц. второе) ", pattern.case_insensity | pattern.multiline); // Matcher Matcher = P.Matcher (DatestR); Matchter matchter_detail = p_detail.matcher (datest); if (! (matchter_detail.find (0) && matcher_detail.groupcount ()> = 1)) {matcher_detail = p.matcher (datestry); canteShms = true; } else matchter_detail = p_detail.matcher (datestr); if (matchter_detail.find () && matchter_detail.groupcount ()> = 1) {matches = new ArrayList (); for (int i = 1; i <= matchter_detail.groupcount (); i ++) {string temp = matcher_detail.group (i); совпадения. ADD (TEMP); }} else {matches = collections.empty_list; } if (matches.size ()> 0) {for (int i = 0; i <matches.size (); i ++) {String pubtime = matches.get (i) .toString (). trim (); // Установите первое значение pubtime = pubtime.replace ("/", "-"). Заменить ("Год", "-"). Заменить ("Месяц", "-"). Заменить ("День", "-"); if (current.compareto (timeutil.strtocalendar (pubtime, "yyyy-mm-dd"))> = 0) {if (cancephms) pubtime+= ""+"00:00:00"; if (pubtime.matches (righttimereg)) {return pubtime; }}}} else {return null; }} catch (Exception e) {return null; } return null; }}Выше приведено все об этой статье, я надеюсь, что для всех будет полезно изучать программирование Java.