Le temps de libération de divers formats dans la page Web est extrait, et le temps de sortie est exprimé dans le format "Yyyy-mm-dd HH: MM: SS". Vous ne pouvez essayer que de poursuivre la précision, mais parce que le format du temps de libération du réseau est très flexible, il ne peut pas être correct à 100%.
package whu.extract.pubtime.core; import java.util.arraylist; import java.util.calendar; import java.util.collections; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; Importer whu.utils.TimeUtil; / ** * Créé le 13 mars 2014 à 14:49:05 PM * @Description Obtenez l'heure de publication de la page Web * / classe publique FetchPubtime {/ ** représente 8 dates consécutives dans l'URL, par exemple http://www.baidu.com/20140311/2356.html * / private static string url_reg_weg = "([- | / | _] {1} 20 // d {6})"; / ** représente une date séparée par - ou / avec un an, un mois et une date, par exemple http://www.baidu.com/2014-3-11/2356.html * / chaîne statique privée url_reg_sep_ymd = "([- | / | _] {1} 20 // d {2} [- | / | _] {1} // d {1,2})"; / ** indique que les dates séparées par - ou /, seulement l'année et le mois, par exemple, http://www.baidu.com/2014-3/2356.html * / chaîne statique privée url_reg_sep_ym = "([- | / | _] {1} 20 // d {2} [- | / | _] {1} // d {1,2})"; courant de calendrier statique privé = calendar.getInstance (); / ** Expression régulière de temps formaté * / chaîne statique privée droitetimeg = "^ ((// 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); // pas dans le lien, correspondant if (pubtime == null) {if (urlContent! = Null &&! UrlContent.trim (). Equals ("")) return extractpagedate (urlContent); } return pubtime; } / ** Extraire le temps de publication à partir de l'URL et retourner yyyy-mm-dd hh: mm: string formel ss * @param url * @return * / public static static getpubtimefromurl (string url) {motif p_whole = motive.compile (url_reg_whole); Matcher 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 ()); // chaque étape ne peut pas dépasser l'heure actuelle if (actuel.compareto (timeUtil.strtocalendar (time, "yyyymmdd"))> = 0) {return time.substring (0,4) + "-" + time.substring (4,6) + "-" + time.substring (6,8) + "+" + "00:00";; }} p_whole = null; m_whole = null; Pattern p_sep = motive.compile (url_reg_sep_ymd); Matcher 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}"); Calendar 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; Pattern p_sep_ym = motive.compile (url_reg_sep_ym); Matcher 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 ()); Calendar 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 (actuel.compareto (thetime)> = 0) {return seg [0] + "-" + seg [1] + "-" + "+" 01 "+" "+" 00:00:00 ";}} retourne null;} / ** Extraire l'heure de publication du code source de la page Web * Formulaire de 2013-12-19 15:48:33 ou 2013-12-19 ou 2012 / 3/05 * @param String Text à extraire * @Return Retour Date * @Author: Oschina * @createetime: 21 janvier 2013 * / Public Static String ExtractPagedate (String Text) {Boolean contiendait; "); Lister les correspondances = null; Jour) ", Pattern.Case_insensitive | Pattern.Multiline); // Si ce n'est que l'année, le mois, le jour, le jour, l'heure, la minute, le deuxième, le deuxième, le modèle suivant P = Pattern. deuxième) ", Pattern.case_insensitive | Pattern.Multiline); // Matcher Matcher = P.Matcher (datestr); Matcher Matcher_Detail = p_detail.matcher (datestr); if (! (Matcher_Detail.Find (0) && Matcher_Detail.GroupCount ()> = 1)) {Matcher_Detail = P.Matcher (Datestr); contendshms = true; } else Matcher_Detail = p_detail.matcher (datestr); if (Matcher_Detail.Find () && Matcher_Detail.GroupCount ()> = 1) {Matches = new ArrayList (); for (int i = 1; i <= matchder_detail.groupcount (); i ++) {String temp = Matcher_Detail.group (i); matches.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 (); // éliminer la première valeur pubtime = pubtime.replace ("/", "-"). Remplacer ("année", "-"). Remplacer ("mois", "-"). Remplacer ("Day", "-"); if (actuel.compareto (timeUtil.strtocalendar (pubtime, "yyyy-mm-dd"))> = 0) {if (contenantshms) pubtime + = "" + "00:00:00"; if (pubtime.matches (Righttimeg)) {return pubtime; }}}} else {return null; }} catch (exception e) {return null; } return null; }}Ce qui précède concerne cet article, j'espère qu'il sera utile pour tout le monde d'apprendre la programmation Java.