يتم استخراج وقت إصدار التنسيقات المختلفة في صفحة الويب ، ويتم التعبير عن وقت الإصدار بتنسيق "YyyyM-MM-DD HH: MM: SS". يمكنك فقط محاولة متابعة الدقة ، ولكن لأن تنسيق وقت إصدار الشبكة مرن للغاية ، لا يمكن أن يكون صحيحًا بنسبة 100 ٪.
حزمة whu.extract.pubtime.core ؛ استيراد java.util.arraylist ؛ استيراد java.util.calendar ؛ استيراد java.util.collections ؛ استيراد java.util.list ؛ استيراد java.util.regex.matcher ؛ استيراد java.util.regex.pattern ؛ استيراد whu.utils.timeutil ؛ /*** تم إنشاؤه في 13 مارس 2014 في 2:49:05 مساءً* description احصل على وقت النشر لصفحة الويب*/الفئة العامة FetchPubTime {/** يمثل 8 تواريخ متتالية في عنوان url ، على سبيل المثال http://www.baidu.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*/private static string url_reg_sep_ym = "([-|/| _] {1} 20 // d {2} [-|/| _] {1} // d {1،2})" ؛ التقويم الثابت الخاص الحالي = calendar.getInstance () ؛ بر "^((// 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]) | ])) [//-///// 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 * regurn */ string static public getPubTimeVarious (url string ، urlcontent string) {String pubTime = getPubTimeFromurl (url) ؛ // ليس في الرابط ، مطابقة إذا (pubTime == null) {if (urlContent! = null &&! urlContent.trim (). متساوٍ ("")) return extractpagedate (urlContent) ؛ } إرجاع PubTime ؛ } / ** استخراج وقت النشر من عنوان URL وإرجاع yyyy-mm-dd hh: mm: ss-formatted string * @param url * regurn * / string static public getPubTimefromurl (url url) {pattern p_whole = pattern.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 ()) ؛ // لا يمكن أن تتجاوز كل خطوة الوقت الحالي إذا (current.compareto (timeUtil.strtocalendar (time ، "yyyymmdd")> = 0) {return time.substring (0،4)+"+time.substring (4،6)+"-"+time.substring (6،8)+"+" }} p_whole = null ؛ m_whole = null ؛ pattern p_sep = pattern.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}") ؛ التقويم 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) ؛ 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 ()) ؛ التقويم 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 "؛ نموذج 2013-12-19 15:33 أو 2013-12 أو 2012/3/0 {LIST MATCHES = NULL ؛ اليوم) "، pattern.case_insensitive | pattern.multiline) ؛ // إذا كان هذا العام فقط ، الشهر ، اليوم ، الساعة ، الدقيقة ، ثانية ، ثانيًا ، ثم اتبع النمط التالي p = pattern.compile (" (20 // d {2} [-/] // d {1،2} ثانياً) "، pattern.case_insensitive | pattern.multiline) ؛ // Matcher Matcher = P.Matcher (DateSt) ؛ Matcher Matcher_Detail = p_detail.matcher (datest) ؛ if (! (matcher_detail.find (0) && matcher_detail.groupcount ()> = 1)) {matcher_detail = p.matcher (datest) ؛ احتواء = صواب ؛ } آخر matcher_detail = p_detail.matcher (datest) ؛ if (matcher_detail.find () && matcher_detail.groupcount ()> = 1) {matches = new ArrayList () ؛ لـ (int i = 1 ؛ i <= matcher_detail.groupcount () ؛ i ++) {string temp = matcher_detail.group (i) ؛ Matches.Add (temp) ؛ }} آخر {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 ("/" ، "-"). استبدال ("السنة" ، "-"). استبدال ("شهر" ، "). استبدال (" Day "،-") ؛ if (current.compareto (timeUtil.strtocalendar (pubTime ، "Yyyy-MM-DD"))> = 0) {if (convalshms) pubTime+= ""+"00:00:00" ؛ if (pubtime.matches (rightTimereg)) {return pubTime ؛ }}}} آخر {return null ؛ }} catch (استثناء e) {return null ؛ } إرجاع فارغ ؛ }}ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون من المفيد للجميع تعلم برمجة Java.