تنقسم هذه المقالة بشكل أساسي إلى جزأين لمعالجة التاريخ. هنا مقدمة مفصلة لها.
الجزء 1: أساسيات معالجة التاريخ
فئة التاريخ <br /> وظيفة: الوظيفة الرئيسية هي الحصول على الوقت الحالي وتحويل التاريخ إلى تنسيق قياسي
تاريخ التاريخ = تاريخ جديد () ؛ SimplEdateFormat SDF = جديد SimplEdateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ String str = sdf.format (date) ؛ system.out.println ("2015-10-16 14:59:52") ؛ تحويل السلسلة إلى نوع التاريخ
string day = "2014-6-5 10:30:30" ؛ SimpleDateFormat D2 = new SimpleDateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ Date Date2 = d2.parse (day) ؛ system.out.println ("Thu Jun 050:30:30 CST 2014") ؛ تطبيق فئة التقويم
فئة java.util.calendar هي فئة مجردة. يمكنك الحصول على كائن تقويم من خلال استدعاء طريقة GetInstance () الثابتة. تمت تهيئة هذا الكائن حسب التاريخ والوقت الحاليين ، أي أنه يمثل الوقت الحالي افتراضيًا.
Calendar c = calendar.getInstance () ؛ int year = c.get (calender.year) ؛ int month = c.get (calender.month) +1 ؛ // الحصول على الشهر ، 0 يعني يناير int day = c.get (calender.day_of_month) ؛ int hour = c.get (calender.hour_of_day) ؛ int minute = c.get (calender.minute) ؛ int second = c.get (calender.second) ؛
قارن بين شهرين مع وقت مختلف
SimpledAteFormat Format = جديد simpledateFormat ("Yyyyy-MM-DD HH: mm: ss") ؛ dateTime d1 = new dateTime (format.parse ("2016-10-31 00:00:00")) ؛ DateTime D2 = new dateTime (format.parse ("2015-d-31 00:00:00 ")الجزء 2: فئة أدوات معالجة التاريخ
حزمة com.analysys.website.control ؛ استيراد java.text.parseException ؛ استيراد java.text.parseposition ؛ استيراد java.text.simpledateformat ؛ استيراد java.util.calendar ؛ import java.util.date ؛ استيراد java.util.gregoriancalendar ؛ استيراد org.apache.commons.lang.stringUtils ؛ استيراد org.apache.log4j.logger ؛ /** * فئة أداة معالجة التاريخ * Author dylan_xu * date Mar 11 ، 2012 * modified بواسطة * modified date * since jdk1.6 * seee com.util.dateutil */public class dateutil {// ~ static fields/initializers // ========================================================================= ========================================================================= logger static private = logger.getLogger (dateUtil.class) ؛ سلسلة ثابتة خاصة defaultDatePattern = فارغة ؛ static string static static static = "hh: mm" ؛ التقويم الثابت الخاص cale = calendar.getInstance () ؛ السلسلة النهائية الثابتة العامة ts_format = dateUtil.getDatePattern () + "HH: mm: ss.s" ؛ / ** تنسيق التاريخ yyyy-mm String ثابت*/ private Static Final String Month_Format = "Yyyy-MM" ؛ / ** تنسيق التاريخ yyyy-mm-dd String ثابت*/ private Static Final String Date_format = "Yyyy-MM-DD" ؛ / ** تنسيق التاريخ HH: MM: SS String ثابت*/ سلسلة نهائية ثابتة hour_format = "HH: MM: SS" ؛ / ** تنسيق التاريخ yyyy-mm-dd hh: mm: SS String ثابت*/ private Static Final String DateTime_Format = "Yyyy-MM-DD HH: MM: SS" ؛ / ** بداية اليوم ، الدقيقة والثانية ثابتة السلسلة 00:00:00*/ سلسلة نهائية ثابتة Day_Begin_String_HHMMSS = "00:00:00" ؛ / ** بداية اليوم ، الدقيقة والثانية ثابتة 23:59:59*/ السلسلة النهائية الثابتة العامة Day_end_String_HHMMSS = "23:59:59" ؛ static static simpledateformat sdf_date_format = new SimplEdateFormat (date_format) ؛ static static simpledateformat sdf_hour_format = new SimplEdateFormat (hour_format) ؛ static static simpledateformat sdf_dateTime_Format = جديد simpleatformat (dateTime_Format) ؛ // ~ Methods // ==================================================================================================== public DateUtil() { } / ** * احصل على تاريخ ووقت الخادم الحاليين ، ارجع في شكل سلسلة تاريخ مع التنسيق: Yyyy-MM-DD HH: MM: SS * Author dylan_xu * @Date 11 ، 2012 * / regherting string getDateTime () {try sdf_datetime_format.format.format.format.format.format.format.format. } catch (استثناء e) {logger.debug ("dateUtil.getDateTime ():" + e.getMessage ()) ؛ يعود ""؛ }} / ** * احصل على التاريخ الحالي للخادم ، ارجع في شكل سلسلة تاريخ مع التنسيق: yyyy-mm-dd * author dylan_xu * date mar 11 ، 2012 * return * / public static string getDate () } catch (استثناء e) {logger.debug ("dateUtil.getDate ():" + e.getMessage ()) ؛ يعود ""؛ }} / ** * احصل على الوقت الحالي للخادم ، ارجع في شكل سلسلة تاريخ مع التنسيق: HH: mm: ss * author dylan_xu * date mar 11 ، 2012 * regurn * / public static string getTime () {String temp = "" ؛ حاول {temp += sdf_hour_format.format (cale.getTime ()) ؛ عودة درجة الحرارة. } catch (استثناء e) {logger.debug ("dateUtil.getTime ():" + E.GetMessage ()) ؛ يعود ""؛ }} / ** * القيمة الافتراضية لتاريخ البدء أثناء الإحصائيات * Author dylan_xu * date Mar 11 ، 2012 * @Return * / public static string getStartDate () {try {return getyear () + "-01-01" ؛ } catch (استثناء e) {logger.debug ("dateUtil.getStartDate ():" + e.getMessage ()) ؛ يعود ""؛ }} / ** * القيمة الافتراضية لتاريخ الانتهاء أثناء الإحصائيات * Author dylan_xu * date Mar 11 ، 2012 * @regurn * / public static string getenddate () {try {return getDate () ؛ } catch (استثناء e) {logger.debug ("dateUtil.getendDate ():" + e.getMessage ()) ؛ يعود ""؛ }} / ** * احصل على سنة التاريخ الحالي للخادم * Author dylan_xu * date Mar 11 ، 2012 * regurn * / public static string getyear () {try {return string.valueof (cale.get (calendar.year)) ؛ } catch (استثناء e) {logger.debug ("dateutil.getyear ():" + e.getMessage ()) ؛ يعود ""؛ }} / ** * احصل على شهر التاريخ الحالي للخادم * author dylan_xu * date mar 11 ، 2012 * regurn * / public static string getMonth () {try {java.text.decimalformat df = new java.text.decimalformat () ؛ df.applypattern ("00 ؛ 00") ؛ إرجاع df.format ((cale.get (calendar.month) + 1)) ؛ } catch (استثناء e) {logger.debug ("dateUtil.getMonth ():" + E.GetMessage ()) ؛ يعود ""؛ }} / ** * احصل على عدد الأيام في الشهر الحالي للخادم * author dylan_xu * date mar 11 ، 2012 * reghurn * / public static string getDay () {try {return string.valueof (cale.get (calendar.day_f.month)) ؛ } catch (استثناء e) {logger.debug ("dateUtil.getDay ():" + E.GetMessage ()) ؛ يعود ""؛ }} / ** * مقارنة عدد الأيام بين تواريخين * Author dylan_xu * date Mar 11 ، 2012 * param date1 * param date2 * @return * / public static int getMargin (String 1 ، سلسلة date2) {int margin ؛ حاول {parseposition pos = parseposition (0) ؛ parseposition pos1 = parseposition جديد (0) ؛ DATE DT1 = SDF_DATE_FORMAT.PARSE (DATE1 ، POS) ؛ DATE DT2 = SDF_DATE_FORMAT.PARSE (DATE2 ، POS1) ؛ Long l = dt1.getTime () - dt2.getTime () ؛ الهامش = (int) (l / (24 * 60 * 60 * 1000)) ؛ الهامش الإرجاع } catch (استثناء e) {logger.debug ("dateUtil.getMargin ():" + e.toString ()) ؛ العودة 0 ؛ }} / ** * مقارنة بين عدد الأيام التي يختلف فيها التواريخ * @Auuthor dylan_xu * date Mar 11 ، 2012 * param date1 * param date2 * regurn * / public static double getDoutbleMargin (سلسلة date2) حاول {parseposition pos = parseposition (0) ؛ parseposition pos1 = parseposition جديد (0) ؛ تاريخ DT1 = SDF_DATETIME_FORMAT.PARSE (DATE1 ، POS) ؛ تاريخ DT2 = SDF_DATETIME_FORMAT.PARSE (DATE2 ، POS1) ؛ Long l = dt1.getTime () - dt2.getTime () ؛ الهامش = (l / (24 * 60 * 60 * 1000.00)) ؛ الهامش الإرجاع } catch (استثناء e) {logger.debug ("dateUtil.getMargin ():" + e.toString ()) ؛ العودة 0 ؛ }} / ** * مقارنة عدد الأشهر بين التاريخين * Author dylan_xu * date Mar 11 ، 2012 * param date1 * param date2 * regurn * / public int getMonthMargin (String 1 ، سلسلة date2) {int margin ؛ Try {margin = (Integer.Parseint (Date2.SubString (0 ، 4)) - integer.parseint (Date1.SubString (0 ، 4))) * 12 ؛ margin += (integer.parseint (date2.substring (4 ، 7) .replaceall ("-0" ، "-")-integer.parseint (date1.substring (4 ، 7) .replaceall ("-0" ، "-"))) ؛ الهامش الإرجاع } catch (استثناء e) {logger.debug ("dateUtil.getMargin ():" + e.toString ()) ؛ العودة 0 ؛ } ستر integer.parseint (date.substring (5 ، 7)) - 1 ، integer.parseint (date.substring (8 ، 10))) ؛ gcal.add (gregoriancalendar.date ، i) ؛ إرجاع sdf_date_format.format (gcal.getTime ()) ؛ } catch (استثناء e) {logger.debug ("dateutil.addday ():" + e.toString ()) ؛ إرجاع getDate () ؛ } ستر integer.parseint (date.substring (5 ، 7)) - 1 ، integer.parseint (date.substring (8 ، 10))) ؛ gcal.add (gregoriancalendar.mon ، i) ؛ إرجاع sdf_date_format.format (gcal.getTime ()) ؛ } catch (استثناء e) {logger.debug ("dateutil.addmonth ():" + e.toString ()) ؛ إرجاع getDate () ؛ }} / ** * إرجاع التاريخ بعد التاريخ بالإضافة إلى x سنوات * Author dylan_xu * date Mar 11 ، 2012 * param date * param i * / static string addyear (string date ، int i) {try {gregoriancalendr gcal = new gregoriancalendar (inte) integer.parseint (date.substring (5 ، 7)) - 1 ، integer.parseint (date.substring (8 ، 10))) ؛ gcal.add (gregoriancalendar.year ، i) ؛ إرجاع sdf_date_format.format (gcal.getTime ()) ؛ } catch (استثناء e) {logger.debug ("dateutil.addyear ():" + e.toString ()) ؛ يعود ""؛ }} / ** * إرجاع اليوم القصوى لمدة شهر معين في سنة معينة * Author dylan_xu * date Mar 11 ، 2012 * param year * param month * return * / public static int getMaxDay (int iyear ، int image) {int day = 0 ؛ حاول {if (imonth == 1 || Image == 3 || Image == 5 || Image == 7 || Image == 8 || Image == 10 || Image == 12) {day = 31 ؛ } آخر إذا (imonth == 4 || Image == 6 || Image == 9 || Image == 11) {day = 30 ؛ } آخر إذا ((0 == (iyear ٪ 4)) && (0! = (iyear ٪ 100)) || (0 == (iyear ٪ 400))) {day = 29 ؛ } آخر {day = 28 ؛ يوم العودة ؛ } catch (استثناء e) {logger.debug ("dateUtil.getMonthDay ():" + e.toString ()) ؛ العودة 1 ؛ }} / ** * تاريخ التنسيق * Author dylan_xu * date Mar 11 ، 2012 * param orgdate * param type * param span * @return * / suppresswarnings ("static-access") string string public (String orgdate ، int typ ، int span) int iyear ، صورة ، iday ؛ int الاكتتابات الاكتتابات = 0 ؛ char seperater = '-' ؛ if (orgDate == null || orgdate.length () <6) {return "" ؛ } الاكتتابات = orgdate.indexof (seperater) ؛ if (ipos> 0) {iyear = integer.parseint (orgDate.SubString (0 ، ipos)) ؛ temp = orgdate.substring (الاكتتابات + 1) ؛ } آخر {iyear = integer.parseint (orgdate.substring (0 ، 4)) ؛ temp = orgdate.substring (4) ؛ } الاكتتابات = temp.indexof (seperater) ؛ if (ipos> 0) {image = integer.parseint (temp.subString (0 ، apos)) ؛ temp = temp.SubString (الاكتتابات + 1) ؛ } آخر {ipos = temp.indexof (seperater) ؛ if (ipos> 0) {image = integer.parseint (temp.subString (0 ، apos)) ؛ temp = temp.SubString (الاكتتابات + 1) ؛ } آخر {image = integer.parseint (temp.substring (0 ، 2)) ؛ temp = temp.SubString (2) ؛ } صورة-؛ if (imonth <0 || Image> 11) {Image = 0 ؛ } iday = integer.parseint (temp) ؛ if (اليوم <1 || iday> 31) iday = 1 ؛ التقويم orgcale = calendar.getInstance () ؛ orgcale.set (iyear ، صورة ، iday) ؛ temp = this.rolldate (orgcale ، type ، span) ؛ عودة درجة الحرارة. } catch (استثناء e) {return "" ؛ }} rolldate static static static (Calendar cal ، type int ، int span) {try {string temp = "" ؛ الحافظة التقويم. الحافظة = كال ؛ rolcale.add (النوع ، span) ؛ temp = sdf_date_format.format (rolcale.getTime ()) ؛ عودة درجة الحرارة. } catch (استثناء e) {return "" ؛ }} / ** * إرجاع تنسيق التاريخ الافتراضي * Author dylan_xu * date Mar 11 ، 2012 * regurn * / سلسلة متزامنة ثابتة getDatePattern () {defaultPattern = "Yyyyy-MM-DD" ؛ إرجاع defaultDatePattern ؛ } / ** * استبدل التاريخ المحدد في سلسلة في التنسيق والإخراج الافتراضي ، مثل: yyyym-mm-dd * author dylan_xu * date mar 11 ، 2012 * param adate * regurn * / public static final getDate (date adate) سلسلة returnValue = "" ؛ if (adate! = null) {df = new SimplEdateFormat (getDatePattern ()) ؛ returnValue = df.format (adate) ؛ } العودة (returnValue) ؛ } / ** * احصل على سلسلة الوقت للتاريخ المحدد ، فإن التنسيق هو تنسيق الوقت الافتراضي الحالي * Author dylan_xu * date Mar 11 ، 2012 * param thetime * regurn * / static static public getTimenow (Date thetime) {return getDatetime (thepattern ، thetime) ؛ } / ** * احصل على كائن تقويم التقويم للوقت الحالي * Author dylan_xu * date Mar 11 ، 2012 * RETURN * throws parseException * / التقويم العام getToday () يلقي ParseException {Date today = New Date () ؛ SimplEdateFormat df = new SimplEdateFormat (getDatePattern ()) ؛ String todayAssTring = df.format (اليوم) ؛ Calendar Cal = new GregorianCalendar () ؛ Cal.Settime (ConfltStringTodate (TodayAsstring)) ؛ إرجاع كال ؛ } / ** * قم بتحويل فئة التاريخ إلى نموذج سلسلة بالتنسيق المحدد * Author dylan_xu * date Mar 11 ، 2012 * param amask * param adate * regurn * / public static string getDateTime (String amask ، date adate) {simpleDateFormat df = null ؛ سلسلة returnValue = "" ؛ if (adate == null) {logger.error ("adate is null!") ؛ } else {df = new SimplEdateFormat (amask) ؛ returnValue = df.format (adate) ؛ } العودة (returnValue) ؛ } / ** * قم بتحويل التاريخ المحدد إلى نموذج السلسلة بالتنسيق الافتراضي * Author dylan_xu * date mar 11 ، 2012 * param adate * regurn * / public static final string convertDateString (date adate) {return getDateTime (getDatePattern () ، adate) ؛ ستر parseException {simpleDateFormat df = null ؛ تاريخ التاريخ = فارغ ؛ df = new SimplEdateFormat (amask) ؛ if (logger.isdebugenabled ()) {logger.debug ("تحويل" " + strdate +" حتى الآن مع القناع " + amask +" "") ؛ } جرب {date = df.parse (strdate) ؛ } catch (parseException pe) {logger.error ("parseException:" + pe) ؛ رمي PE. } العودة (التاريخ) ؛ } / ** * تحويل سلسلة التاريخ حتى الآن اكتب في التنسيق الافتراضي * Author dylan_xu * date Mar 11 ، 2012 * param strdate * regurn * throws parseException * / public static date stattringTringTodate (String strdate) rems parseException {date adate = null ؛ حاول {if (logger.isdebugenabled ()) {logger.debug ("تاريخ التحويل مع نمط:" + getDatePattern ()) ؛ } adate = concurntringTodate (getDatePattern () ، strdate) ؛ } catch (parseException pe) {logger.error ("لا يمكن تحويل '" + strdate + "' إلى تاريخ ، رمي استثناء") ؛ رمي parseException (pe.getMessage () ، pe.geterroroffset ()) ؛ } إعادة adate ؛ } / ** * إرجاع سلسلة تاريخ من نوع Java Simple * Author dylan_xu * date Mar 11 ، 2012 * regurn * / سلسلة ثابتة عامة getSimpleDateFormat () {simpledateformat formatter = new SimpleTformat () ؛ سلسلة ndateTime = formatter.format (تاريخ جديد ()) ؛ إرجاع ndatetime ؛ }/** * المقارنة بين التاريخ بتنسيق السلسلة المحدد مع الوقت الحالي * Author dylan * date فبراير 17 ، 2012 * param strdate الوقت اللازم للمقارنة * @return * <p> * int code * <ul> * <li> -1 الوقت الحالي <compare time </li> </ul> * </p> */public static int intoCurtime (String strdate) {if (stringUtils.IsBlank (strdate)) {return -1 ؛ } Date Curtime = cale.getTime () ؛ سلسلة strcurtime = فارغة ؛ حاول {strcurtime = sdf_datetime_format.format (curtime) ؛ } catch (استثناء e) {if (logger.isdebugenabled ()) {logger.debug ("[[لا يمكن تنسيق" " + strdate +" إلى تاريخ ، رمي استثناء: " + E.GetLocalizedMessage () +"]) ؛ }} if (stringUtils.isnotBlank (strcurtime)) {return strcurtime.compareto (strdate) ؛ } العودة -1 ؛ } / ** * أضف الحد الأدنى من الوقت إلى تاريخ الاستعلام * * param نوع الهدف تاريخ * param معلمة التحويل تاريخ * return * / suppresswarnings ("deprecation") تاريخ ثابت عام addstartTime (تاريخ الموعد) {تاريخ التاريخ = param ؛ حاول {date.sethours (0) ؛ Date.setMinutes (0) ؛ Date.SetSeconds (0) ؛ تاريخ العودة } catch (استثناء ex) {return date ؛ }} / ** * أضف أقصى وقت إلى تاريخ الاستعلام * * param نوع الهدف تاريخ * param معلمة التحويل تاريخ * regurn * / suppressWarnings ("deprecation") تاريخ الثابت العام الإضافة (تاريخ تاريخ) {تاريخ التاريخ = param ؛ جرب {date.sethours (23) ؛ Date.setMinutes (59) ؛ Date.SetSeconds (0) ؛ تاريخ العودة } catch (استثناء ex) {return date ؛ }} / *** إرجاع عدد الأيام في السنة الحالية للنظام** param الشهر* @إجمالي أيام العودة في الشهر المحدد* / suppressWarnings ("deprecation") السلسلة الثابتة العامة getMonthlastday (int month) {date date = new date () ؛ int [] [] day = {{0 ، 30 ، 28 ، 31 ، 30 ، 31 ، 30 ، 31 ، 31 ، 30 ، 31 ، 30 ، 31} ، {0 ، 31 ، 29 ، 31 ، 30 ، 31 ، 30 ، 31 ، 31 ، 30 ، 31}} ؛ int year = date.getyear () + 1900 ؛ if (Year ٪ 4 == 0 && year ٪ 100! = 0 || year ٪ 400 == 0) {return day [1] [month] + "" ؛ } else {return day [0] [month] + "" ؛ }} / ** * إرجاع عدد الأيام في الشهر المحدد في السنة المحددة * * @param سنة السنة * الشهر الشهر * @RETURN الإجمالي في الشهر المحدد * / السلسلة الثابتة العامة getMonthlastday (int year ، int [] 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 30 ، 31 ، 31 ، 30 ، 31 ، 30 ، 31}} ؛ if (Year ٪ 4 == 0 && year ٪ 100! = 0 || year ٪ 400 == 0) {return day [1] [month] + "" ؛ } else {return day [0] [month] + "" ؛ }} / ** * احكم ما إذا كانت سنة طبيعية أو سنة قفزة * Author dylan_xu * date Mar 11 ، 2012 * param year * / static boolean isLeapyear (int year) {if ((year ٪ 4 == 0 && year ٪ 100! = 0) || } آخر {return false ؛ }} / ** * احصل على ختم اليوم للوقت الحالي * author dylan_xu * date mar 11 ، 2012 * return * / suppresswarnings ("deprecation") السلسلة الثابتة العامة getTimestamp () {date date = cale.gettime () ؛ سلسلة timestamp = "" + (date.getyear () + 1900) + date.getmonth () + date.getDate () + date.getMinutes () + date.getSeconds () + date.getTime () ؛ إرجاع الطابع الزمني ؛ } / ** * احصل على ختم اليوم للوقت المحدد * * * return * / suppressWarnings ("deprecation") السلسلة الثابتة العامة getTimestamp (تاريخ تاريخ) إرجاع الطابع الزمني ؛ } public static void main (string [] args) {system.out.println (getyear () + "|" + getMonth () + "|" + getDate ()) ؛ }}ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.