程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java日期處置對象類

java日期處置對象類

編輯:關於JAVA

java日期處置對象類。本站提示廣大學習愛好者:(java日期處置對象類)文章只能為提供參考,不一定能成為您想要的結果。以下是java日期處置對象類正文


本文針對日期處置停止進修應用,重要分為兩部門,上面為年夜家詳細引見一下

第一部門:日期處置基本常識

Date 類
感化:最重要的感化就是取得以後時光
將日期轉換為尺度格局

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(“2015-10-16 14:59:52”);

將String轉換為Date類型

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 05 10:30:30 CST 2014”);

Calendar 類的運用

java.util.Calendar 類是一個籠統類,可以經由過程挪用 getInstance() 靜態辦法獲得一個 Calendar 對象,此對象已由以後日期時光初始化,即默許代表以後時光

 Calendar c = Calendar.getInstance();
int year = c.get(Calender.YEAR);
int month= c.get(Calender.MONTH)+1; //獲得月份,0表現1月份
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);

比擬2個時光相差的月份

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateTime d1 = new DateTime(format.parse("2016-10-31 00:00:00"));
DateTime d2 = new DateTime(format.parse("2015-1-31 00:00:00"));
System.out.println(Math.abs(Months.monthsBetween(d1,d2).getMonths()));

第二部門:日期處置對象類

package com.analysys.website.control;
 
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
 
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
 
/** 
 * 日期處置對象類 
 * @author dylan_xu 
 * @date Mar 11, 2012 
 * @modified by 
 * @modified date 
 * @since JDK1.6 
 * @see com.util.DateUtil 
 */ 
  
public class DateUtil { 
  // ~ Static fields/initializers 
  // ============================================= 
  
  private static Logger logger = Logger.getLogger(DateUtil.class); 
  private static String defaultDatePattern = null; 
  private static String timePattern = "HH:mm"; 
  private static Calendar cale = Calendar.getInstance(); 
  public static final String TS_FORMAT = DateUtil.getDatePattern() + " HH:mm:ss.S"; 
  /** 日期格局yyyy-MM字符串常量 */ 
  private static final String MONTH_FORMAT = "yyyy-MM"; 
  /** 日期格局yyyy-MM-dd字符串常量 */ 
  private static final String DATE_FORMAT = "yyyy-MM-dd"; 
  /** 日期格局HH:mm:ss字符串常量 */ 
  private static final String HOUR_FORMAT = "HH:mm:ss"; 
  /** 日期格局yyyy-MM-dd HH:mm:ss字符串常量 */ 
  private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; 
  /** 某天開端時分秒字符串常量 00:00:00 */ 
  private static final String DAY_BEGIN_STRING_HHMMSS = " 00:00:00"; 
  /** 某天停止時分秒字符串常量 23:59:59 */ 
  public static final String DAY_END_STRING_HHMMSS = " 23:59:59"; 
  private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT); 
  private static SimpleDateFormat sdf_hour_format = new SimpleDateFormat(HOUR_FORMAT); 
  private static SimpleDateFormat sdf_datetime_format = new SimpleDateFormat(DATETIME_FORMAT); 
    
  
  // ~ Methods 
  // ================================================================ 
  
  public DateUtil() { 
  } 
  
  /** 
   * 取得辦事器以後日期實時間,以格局為:yyyy-MM-dd HH:mm:ss的日期字符串情勢前往 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getDateTime() { 
    try { 
      return sdf_datetime_format.format(cale.getTime()); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getDateTime():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 取得辦事器以後日期,以格局為:yyyy-MM-dd的日期字符串情勢前往 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getDate() { 
    try { 
      return sdf_date_format.format(cale.getTime()); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getDate():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 取得辦事器以後時光,以格局為:HH:mm:ss的日期字符串情勢前往 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getTime() { 
    String temp = " "; 
    try { 
      temp += sdf_hour_format.format(cale.getTime()); 
      return temp; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getTime():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 統計時開端日期的默許值 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getStartDate() { 
    try { 
      return getYear() + "-01-01"; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getStartDate():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 統計時停止日期的默許值 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getEndDate() { 
    try { 
      return getDate(); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getEndDate():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 取得辦事器以後日期的年份 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getYear() { 
    try { 
      return String.valueOf(cale.get(Calendar.YEAR)); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getYear():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 取得辦事器以後日期的月份 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getMonth() { 
    try { 
      java.text.DecimalFormat df = new java.text.DecimalFormat(); 
      df.applyPattern("00;00"); 
      return df.format((cale.get(Calendar.MONTH) + 1)); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getMonth():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 取得辦事器在以後月中天數 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getDay() { 
    try { 
      return String.valueOf(cale.get(Calendar.DAY_OF_MONTH)); 
    } catch (Exception e) { 
      logger.debug("DateUtil.getDay():" + e.getMessage()); 
      return ""; 
    } 
  } 
  
  /** 
   * 比擬兩個日期相差的天數 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date1 
   * @param date2 
   * @return 
   */ 
  public static int getMargin(String date1, String date2) { 
    int margin; 
    try { 
      ParsePosition pos = new ParsePosition(0); 
      ParsePosition pos1 = new ParsePosition(0); 
      Date dt1 = sdf_date_format.parse(date1, pos); 
      Date dt2 = sdf_date_format.parse(date2, pos1); 
      long l = dt1.getTime() - dt2.getTime(); 
      margin = (int) (l / (24 * 60 * 60 * 1000)); 
      return margin; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getMargin():" + e.toString()); 
      return 0; 
    } 
  } 
  
  /** 
   * 比擬兩個日期相差的天數 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date1 
   * @param date2 
   * @return 
   */ 
  public static double getDoubleMargin(String date1, String date2) { 
    double margin; 
    try { 
      ParsePosition pos = new ParsePosition(0); 
      ParsePosition pos1 = new ParsePosition(0); 
      Date dt1 = sdf_datetime_format.parse(date1, pos); 
      Date dt2 = sdf_datetime_format.parse(date2, pos1); 
      long l = dt1.getTime() - dt2.getTime(); 
      margin = (l / (24 * 60 * 60 * 1000.00)); 
      return margin; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getMargin():" + e.toString()); 
      return 0; 
    } 
  } 
  
  /** 
   * 比擬兩個日期相差的月數 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date1 
   * @param date2 
   * @return 
   */ 
  public static int getMonthMargin(String date1, String 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", "-"))); 
      return margin; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getMargin():" + e.toString()); 
      return 0; 
    } 
  } 
  
  /** 
   * 前往日期加X天後的日期 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date 
   * @param i 
   * @return 
   */ 
  public static String addDay(String date, int i) { 
    try { 
      GregorianCalendar gCal = new GregorianCalendar( 
          Integer.parseInt(date.substring(0, 4)),  
          Integer.parseInt(date.substring(5, 7)) - 1,  
          Integer.parseInt(date.substring(8, 10))); 
      gCal.add(GregorianCalendar.DATE, i); 
      return sdf_date_format.format(gCal.getTime()); 
    } catch (Exception e) { 
      logger.debug("DateUtil.addDay():" + e.toString()); 
      return getDate(); 
    } 
  } 
  
  /** 
   * 前往日期加X月後的日期 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date 
   * @param i 
   * @return 
   */ 
  public static String addMonth(String date, int i) { 
    try { 
      GregorianCalendar gCal = new GregorianCalendar( 
          Integer.parseInt(date.substring(0, 4)),  
          Integer.parseInt(date.substring(5, 7)) - 1,  
          Integer.parseInt(date.substring(8, 10))); 
      gCal.add(GregorianCalendar.MONTH, i); 
      return sdf_date_format.format(gCal.getTime()); 
    } catch (Exception e) { 
      logger.debug("DateUtil.addMonth():" + e.toString()); 
      return getDate(); 
    } 
  } 
  
  /** 
   * 前往日期加X年後的日期 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param date 
   * @param i 
   * @return 
   */ 
  public static String addYear(String date, int i) { 
    try { 
      GregorianCalendar gCal = new GregorianCalendar( 
          Integer.parseInt(date.substring(0, 4)),  
          Integer.parseInt(date.substring(5, 7)) - 1,  
          Integer.parseInt(date.substring(8, 10))); 
      gCal.add(GregorianCalendar.YEAR, i); 
      return sdf_date_format.format(gCal.getTime()); 
    } catch (Exception e) { 
      logger.debug("DateUtil.addYear():" + e.toString()); 
      return ""; 
    } 
  } 
  
  /** 
   * 前往某年某月中的最年夜天 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param year 
   * @param month 
   * @return 
   */ 
  public static int getMaxDay(int iyear, int imonth) { 
    int day = 0; 
    try { 
      if (imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7 
          || imonth == 8 || imonth == 10 || imonth == 12) { 
        day = 31; 
      } else if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) { 
        day = 30; 
      } else if ((0 == (iyear % 4)) && (0 != (iyear % 100)) || (0 == (iyear % 400))) { 
        day = 29; 
      } else { 
        day = 28; 
      } 
      return day; 
    } catch (Exception e) { 
      logger.debug("DateUtil.getMonthDay():" + e.toString()); 
      return 1; 
    } 
  } 
  
  /** 
   * 格局化日期 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param orgDate 
   * @param Type 
   * @param Span 
   * @return 
   */ 
  @SuppressWarnings("static-access") 
  public String rollDate(String orgDate, int Type, int Span) { 
    try { 
      String temp = ""; 
      int iyear, imonth, iday; 
      int iPos = 0; 
      char seperater = '-'; 
      if (orgDate == null || orgDate.length() < 6) { 
        return ""; 
      } 
  
      iPos = orgDate.indexOf(seperater); 
      if (iPos > 0) { 
        iyear = Integer.parseInt(orgDate.substring(0, iPos)); 
        temp = orgDate.substring(iPos + 1); 
      } else { 
        iyear = Integer.parseInt(orgDate.substring(0, 4)); 
        temp = orgDate.substring(4); 
      } 
  
      iPos = temp.indexOf(seperater); 
      if (iPos > 0) { 
        imonth = Integer.parseInt(temp.substring(0, iPos)); 
        temp = temp.substring(iPos + 1); 
      } else { 
        imonth = Integer.parseInt(temp.substring(0, 2)); 
        temp = temp.substring(2); 
      } 
  
      imonth--; 
      if (imonth < 0 || imonth > 11) { 
        imonth = 0; 
      } 
  
      iday = Integer.parseInt(temp); 
      if (iday < 1 || iday > 31) 
        iday = 1; 
  
      Calendar orgcale = Calendar.getInstance(); 
      orgcale.set(iyear, imonth, iday); 
      temp = this.rollDate(orgcale, Type, Span); 
      return temp; 
    } catch (Exception e) { 
      return ""; 
    } 
  } 
  
  public static String rollDate(Calendar cal, int Type, int Span) { 
    try { 
      String temp = ""; 
      Calendar rolcale; 
      rolcale = cal; 
      rolcale.add(Type, Span); 
      temp = sdf_date_format.format(rolcale.getTime()); 
      return temp; 
    } catch (Exception e) { 
      return ""; 
    } 
  } 
  
  /** 
   * 前往默許的日期格局 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static synchronized String getDatePattern() { 
    defaultDatePattern = "yyyy-MM-dd"; 
    return defaultDatePattern; 
  } 
  
  /** 
   * 將指定日期按默許格局停止格局代化成字符串後輸入如:yyyy-MM-dd 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param aDate 
   * @return 
   */ 
  public static final String getDate(Date aDate) { 
    SimpleDateFormat df = null; 
    String returnValue = ""; 
    if (aDate != null) { 
      df = new SimpleDateFormat(getDatePattern()); 
      returnValue = df.format(aDate); 
    } 
    return (returnValue); 
  } 
  
  /** 
   * 獲得給定日期的時光字符串,格局為以後默許時光格局 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param theTime 
   * @return 
   */ 
  public static String getTimeNow(Date theTime) { 
    return getDateTime(timePattern, theTime); 
  } 
  
  /** 
   * 獲得以後時光的Calendar日歷對象 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   * @throws ParseException 
   */ 
  public Calendar getToday() throws ParseException { 
    Date today = new Date(); 
    SimpleDateFormat df = new SimpleDateFormat(getDatePattern()); 
    String todayAsString = df.format(today); 
    Calendar cal = new GregorianCalendar(); 
    cal.setTime(convertStringToDate(todayAsString)); 
    return cal; 
  } 
  
  /** 
   * 將日期類轉換成指定格局的字符串情勢 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param aMask 
   * @param aDate 
   * @return 
   */ 
  public static final String getDateTime(String aMask, Date aDate) { 
    SimpleDateFormat df = null; 
    String returnValue = ""; 
  
    if (aDate == null) { 
      logger.error("aDate is null!"); 
    } else { 
      df = new SimpleDateFormat(aMask); 
      returnValue = df.format(aDate); 
    } 
    return (returnValue); 
  } 
  
  /** 
   * 將指定的日期轉換成默許格局的字符串情勢 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param aDate 
   * @return 
   */ 
  public static final String convertDateToString(Date aDate) { 
    return getDateTime(getDatePattern(), aDate); 
  } 
  
  /** 
   * 將日期字符串按指定格局轉換成日期類型 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param aMask 指定的日期格局,如:yyyy-MM-dd 
   * @param strDate 待轉換的日期字符串 
   * @return 
   * @throws ParseException 
   */ 
  public static final Date convertStringToDate(String aMask, String strDate) 
      throws ParseException { 
    SimpleDateFormat df = null; 
    Date date = null; 
    df = new SimpleDateFormat(aMask); 
  
    if (logger.isDebugEnabled()) { 
      logger.debug("converting '" + strDate + "' to date with mask '" + aMask + "'"); 
    } 
    try { 
      date = df.parse(strDate); 
    } catch (ParseException pe) { 
      logger.error("ParseException: " + pe); 
      throw pe; 
    } 
    return (date); 
  } 
  
  /** 
   * 將日期字符串按默許格局轉換成日期類型 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @param strDate 
   * @return 
   * @throws ParseException 
   */ 
  public static Date convertStringToDate(String strDate) 
      throws ParseException { 
    Date aDate = null; 
  
    try { 
      if (logger.isDebugEnabled()) { 
        logger.debug("converting date with pattern: " + getDatePattern()); 
      } 
      aDate = convertStringToDate(getDatePattern(), strDate); 
    } catch (ParseException pe) { 
      logger.error("Could not convert '" + strDate + "' to a date, throwing exception"); 
      throw new ParseException(pe.getMessage(), pe.getErrorOffset()); 
    } 
    return aDate; 
  } 
  
  /** 
   * 前往一個JAVA簡略類型的日期字符串 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  public static String getSimpleDateFormat() { 
    SimpleDateFormat formatter = new SimpleDateFormat(); 
    String NDateTime = formatter.format(new Date()); 
    return NDateTime; 
  } 
    
  /** 
   * 將指定字符串格局的日期與以後時光比擬 
   * @author DYLAN 
   * @date Feb 17, 2012 
   * @param strDate 須要比擬時光 
   * @return 
   *   <p> 
   *   int code 
   *   <ul> 
   *   <li>-1 以後時光 < 比擬時光 </li> 
   *   <li> 0 以後時光 = 比擬時光 </li> 
   *   <li>>=1以後時光 > 比擬時光 </li> 
   *   </ul> 
   *   </p> 
   */ 
  public static int compareToCurTime (String strDate) { 
    if (StringUtils.isBlank(strDate)) { 
      return -1; 
    } 
    Date curTime = cale.getTime(); 
    String strCurTime = null; 
    try { 
      strCurTime = sdf_datetime_format.format(curTime); 
    } catch (Exception e) { 
      if (logger.isDebugEnabled()) { 
        logger.debug("[Could not format '" + strDate + "' to a date, throwing exception:" + e.getLocalizedMessage() + "]"); 
      } 
    } 
    if (StringUtils.isNotBlank(strCurTime)) { 
      return strCurTime.compareTo(strDate); 
    } 
    return -1; 
  } 
    
  /** 
   * 為查詢日期添加最小時光 
   * 
   * @param 目的類型Date 
   * @param 轉換參數Date 
   * @return 
   */ 
  @SuppressWarnings("deprecation") 
  public static Date addStartTime(Date param) { 
    Date date = param; 
    try { 
      date.setHours(0); 
      date.setMinutes(0); 
      date.setSeconds(0); 
      return date; 
    } catch (Exception ex) { 
      return date; 
    } 
  } 
  
  /** 
   * 為查詢日期添加最年夜時光 
   * 
   * @param 目的類型Date 
   * @param 轉換參數Date 
   * @return 
   */ 
  @SuppressWarnings("deprecation") 
  public static Date addEndTime(Date param) { 
    Date date = param; 
    try { 
      date.setHours(23); 
      date.setMinutes(59); 
      date.setSeconds(0); 
      return date; 
    } catch (Exception ex) { 
      return date; 
    } 
  } 
  
  /** 
   * 前往體系如今年份中指定月份的天數 
   * 
   * @param 月份month 
   * @return 指定月的總天數 
   */ 
  @SuppressWarnings("deprecation") 
  public static String 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, 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 年份year 
   * @param 月份month 
   * @return 指定月的總天數 
   */ 
  public static String getMonthLastDay(int year, int month) { 
    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, 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 
   * @return 
   */ 
  public static boolean isLeapyear(int year) { 
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) { 
      return true; 
    } else { 
      return false; 
    } 
  } 
  
  /** 
   * 獲得以後時光的日戳 
   * @author dylan_xu 
   * @date Mar 11, 2012 
   * @return 
   */ 
  @SuppressWarnings("deprecation") 
  public static String getTimestamp() { 
    Date date = cale.getTime(); 
    String timestamp = "" + (date.getYear() + 1900) + date.getMonth() 
        + date.getDate() + date.getMinutes() + date.getSeconds() 
        + date.getTime(); 
    return timestamp; 
  } 
  
  /** 
   * 獲得指准時間的日戳 
   * 
   * @return 
   */ 
  @SuppressWarnings("deprecation") 
  public static String getTimestamp(Date date) { 
    String timestamp = "" + (date.getYear() + 1900) + date.getMonth() 
        + date.getDate() + date.getMinutes() + date.getSeconds() 
        + date.getTime(); 
    return timestamp; 
  } 
  
  public static void main(String[] args) { 
    System.out.println(getYear() + "|" + getMonth() + "|" + getDate()); 
  } 
} 

以上就是本文的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved