通用日期處理函數,日期處理大全

http://www.graphics.net.cn/document/java/011/129.asp

 



 

  1. /*
  2.  * <p>Company: 凌科軟件 www.elinksoft.com </p>
  3.  * @author liubaojun
  4.  * @version 1.0
  5.  * Created on 2004-11-29
  6.  * 來源於 elinkBSP (業務架構平臺) 部分源代碼
  7.  */
  8. import java.text.*;
  9. import java.util.*;
  10. public class DateUtil
  11. {
  12.  private static final int[] dayArray = new int[]
  13.   { 312831303130313130313031 };
  14.  private static SimpleDateFormat sdf = new SimpleDateFormat();
  15.  public static synchronized Calendar getCalendar()
  16.  {
  17.   return GregorianCalendar.getInstance();
  18.  }
  19.  /**
  20.   @return String
  21.   */
  22.  public static synchronized String getDateMilliFormat()
  23.  {
  24.   Calendar cal = Calendar.getInstance();
  25.   return getDateMilliFormat( cal );
  26.  }
  27.  /**
  28.   @param cal
  29.   @return String
  30.   */
  31.  public static synchronized String getDateMilliFormat( java.util.Calendar cal )
  32.  {
  33.   String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  34.   return getDateFormat( cal, pattern );
  35.  }
  36.  /**
  37.   @param date
  38.   @return String
  39.   */
  40.  public static synchronized String getDateMilliFormat( java.util.Date date )
  41.  {
  42.   String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  43.   return getDateFormat( date, pattern );
  44.  }
  45.  /**
  46.   @param strDate
  47.   @return java.util.Calendar
  48.   */
  49.  public static synchronized Calendar parseCalendarMilliFormat( String strDate )
  50.  {
  51.   String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  52.   return parseCalendarFormat( strDate, pattern );
  53.  }
  54.  /**
  55.   @param strDate
  56.   @return java.util.Date
  57.   */
  58.  public static synchronized Date parseDateMilliFormat( String strDate )
  59.  {
  60.   String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  61.   return parseDateFormat( strDate, pattern );
  62.  }
  63.  /**
  64.   @return String
  65.   */
  66.  public static synchronized String getDateSecondFormat()
  67.  {
  68.   Calendar cal = Calendar.getInstance();
  69.   return getDateSecondFormat( cal );
  70.  }
  71.  /**
  72.   @param cal
  73.   @return String
  74.   */
  75.  public static synchronized String getDateSecondFormat( java.util.Calendar cal )
  76.  {
  77.   String pattern = "yyyy-MM-dd HH:mm:ss";
  78.   return getDateFormat( cal, pattern );
  79.  }
  80.  /**
  81.   @param date
  82.   @return String
  83.   */
  84.  public static synchronized String getDateSecondFormat( java.util.Date date )
  85.  {
  86.   String pattern = "yyyy-MM-dd HH:mm:ss";
  87.   return getDateFormat( date, pattern );
  88.  }
  89.  /**
  90.   @param strDate
  91.   @return java.util.Calendar
  92.   */
  93.  public static synchronized Calendar parseCalendarSecondFormat( String strDate )
  94.  {
  95.   String pattern = "yyyy-MM-dd HH:mm:ss";
  96.   return parseCalendarFormat( strDate, pattern );
  97.  }
  98.  /**
  99.   @param strDate
  100.   @return java.util.Date
  101.   */
  102.  public static synchronized Date parseDateSecondFormat( String strDate )
  103.  {
  104.   String pattern = "yyyy-MM-dd HH:mm:ss";
  105.   return parseDateFormat( strDate, pattern );
  106.  }
  107.  /**
  108.   @return String
  109.   */
  110.  public static synchronized String getDateMinuteFormat()
  111.  {
  112.   Calendar cal = Calendar.getInstance();
  113.   return getDateMinuteFormat( cal );
  114.  }
  115.  /**
  116.   @param cal
  117.   @return String
  118.   */
  119.  public static synchronized String getDateMinuteFormat( java.util.Calendar cal )
  120.  {
  121.   String pattern = "yyyy-MM-dd HH:mm";
  122.   return getDateFormat( cal, pattern );
  123.  }
  124.  /**
  125.   @param date
  126.   @return String
  127.   */
  128.  public static synchronized String getDateMinuteFormat( java.util.Date date )
  129.  {
  130.   String pattern = "yyyy-MM-dd HH:mm";
  131.   return getDateFormat( date, pattern );
  132.  }
  133.  /**
  134.   @param strDate
  135.   @return java.util.Calendar
  136.   */
  137.  public static synchronized Calendar parseCalendarMinuteFormat( String strDate )
  138.  {
  139.   String pattern = "yyyy-MM-dd HH:mm";
  140.   return parseCalendarFormat( strDate, pattern );
  141.  }
  142.  /**
  143.   @param strDate
  144.   @return java.util.Date
  145.   */
  146.  public static synchronized Date parseDateMinuteFormat( String strDate )
  147.  {
  148.   String pattern = "yyyy-MM-dd HH:mm";
  149.   return parseDateFormat( strDate, pattern );
  150.  }
  151.  /**
  152.   @return String
  153.   */
  154.  public static synchronized String getDateDayFormat()
  155.  {
  156.   Calendar cal = Calendar.getInstance();
  157.   return getDateDayFormat( cal );
  158.  }
  159.  /**
  160.   @param cal
  161.   @return String
  162.   */
  163.  public static synchronized String getDateDayFormat( java.util.Calendar cal )
  164.  {
  165.   String pattern = "yyyy-MM-dd";
  166.   return getDateFormat( cal, pattern );
  167.  }
  168.  /**
  169.   @param date
  170.   @return String
  171.   */
  172.  public static synchronized String getDateDayFormat( java.util.Date date )
  173.  {
  174.   String pattern = "yyyy-MM-dd";
  175.   return getDateFormat( date, pattern );
  176.  }
  177.  /**
  178.   @param strDate
  179.   @return java.util.Calendar
  180.   */
  181.  public static synchronized Calendar parseCalendarDayFormat( String strDate )
  182.  {
  183.   String pattern = "yyyy-MM-dd";
  184.   return parseCalendarFormat( strDate, pattern );
  185.  }
  186.  /**
  187.   @param strDate
  188.   @return java.util.Date
  189.   */
  190.  public static synchronized Date parseDateDayFormat( String strDate )
  191.  {
  192.   String pattern = "yyyy-MM-dd";
  193.   return parseDateFormat( strDate, pattern );
  194.  }
  195.  /**
  196.   @return String
  197.   */
  198.  public static synchronized String getDateFileFormat()
  199.  {
  200.   Calendar cal = Calendar.getInstance();
  201.   return getDateFileFormat( cal );
  202.  }
  203.  /**
  204.   @param cal
  205.   @return String
  206.   */
  207.  public static synchronized String getDateFileFormat( java.util.Calendar cal )
  208.  {
  209.   String pattern = "yyyy-MM-dd_HH-mm-ss";
  210.   return getDateFormat( cal, pattern );
  211.  }
  212.  /**
  213.   @param date
  214.   @return String
  215.   */
  216.  public static synchronized String getDateFileFormat( java.util.Date date )
  217.  {
  218.   String pattern = "yyyy-MM-dd_HH-mm-ss";
  219.   return getDateFormat( date, pattern );
  220.  }
  221.  /**
  222.   @param strDate
  223.   @return java.util.Calendar
  224.   */
  225.  public static synchronized Calendar parseCalendarFileFormat( String strDate )
  226.  {
  227.   String pattern = "yyyy-MM-dd_HH-mm-ss";
  228.   return parseCalendarFormat( strDate, pattern );
  229.  }
  230.  /**
  231.   @param strDate
  232.   @return java.util.Date
  233.   */
  234.  public static synchronized Date parseDateFileFormat( String strDate )
  235.  {
  236.   String pattern = "yyyy-MM-dd_HH-mm-ss";
  237.   return parseDateFormat( strDate, pattern );
  238.  }
  239.  /**
  240.   @return String
  241.   */
  242.  public static synchronized String getDateW3CFormat()
  243.  {
  244.   Calendar cal = Calendar.getInstance();
  245.   return getDateW3CFormat( cal );
  246.  }
  247.  /**
  248.   @param cal
  249.   @return String
  250.   */
  251.  public static synchronized String getDateW3CFormat( java.util.Calendar cal )
  252.  {
  253.   String pattern = "yyyy-MM-dd HH:mm:ss";
  254.   return getDateFormat( cal, pattern );
  255.  }
  256.  /**
  257.   @param date
  258.   @return String
  259.   */
  260.  public static synchronized String getDateW3CFormat( java.util.Date date )
  261.  {
  262.   String pattern = "yyyy-MM-dd HH:mm:ss";
  263.   return getDateFormat( date, pattern );
  264.  }
  265.  /**
  266.   @param strDate
  267.   @return java.util.Calendar
  268.   */
  269.  public static synchronized Calendar parseCalendarW3CFormat( String strDate )
  270.  {
  271.   String pattern = "yyyy-MM-dd HH:mm:ss";
  272.   return parseCalendarFormat( strDate, pattern );
  273.  }
  274.  /**
  275.   @param strDate
  276.   @return java.util.Date
  277.   */
  278.  public static synchronized Date parseDateW3CFormat( String strDate )
  279.  {
  280.   String pattern = "yyyy-MM-dd HH:mm:ss";
  281.   return parseDateFormat( strDate, pattern );
  282.  }
  283.  /**
  284.   @param cal
  285.   @return String
  286.   */
  287.  public static synchronized String getDateFormat( java.util.Calendar cal )
  288.  {
  289.   String pattern = "yyyy-MM-dd HH:mm:ss";
  290.   return getDateFormat( cal, pattern );
  291.  }
  292.  /**
  293.   @param date
  294.   @return String
  295.   */
  296.  public static synchronized String getDateFormat( java.util.Date date )
  297.  {
  298.   String pattern = "yyyy-MM-dd HH:mm:ss";
  299.   return getDateFormat( date, pattern );
  300.  }
  301.  /**
  302.   @param strDate
  303.   @return java.util.Calendar
  304.   */
  305.  public static synchronized Calendar parseCalendarFormat( String strDate )
  306.  {
  307.   String pattern = "yyyy-MM-dd HH:mm:ss";
  308.   return parseCalendarFormat( strDate, pattern );
  309.  }
  310.  /**
  311.   @param strDate
  312.   @return java.util.Date
  313.   */
  314.  public static synchronized Date parseDateFormat( String strDate )
  315.  {
  316.   String pattern = "yyyy-MM-dd HH:mm:ss";
  317.   return parseDateFormat( strDate, pattern );
  318.  }
  319.  /**
  320.   @param cal
  321.   @param pattern
  322.   @return String
  323.   */
  324.  public static synchronized String getDateFormat( java.util.Calendar cal, String pattern )
  325.  {
  326.   return getDateFormat( cal.getTime(), pattern );
  327.  }
  328.  /**
  329.   @param date
  330.   @param pattern
  331.   @return String
  332.   */
  333.  public static synchronized String getDateFormat( java.util.Date date, String pattern )
  334.  {
  335.   synchronized ( sdf )
  336.   {
  337.    String str = null;
  338.    sdf.applyPattern( pattern );
  339.    str = sdf.format( date );
  340.    return str;
  341.   }
  342.  }
  343.  /**
  344.   @param strDate
  345.   @param pattern
  346.   @return java.util.Calendar
  347.   */
  348.  public static synchronized Calendar parseCalendarFormat( String strDate, String pattern )
  349.  {
  350.   synchronized ( sdf )
  351.   {
  352.    Calendar cal = null;
  353.    sdf.applyPattern( pattern );
  354.    try
  355.    {
  356.     sdf.parse( strDate );
  357.     cal = sdf.getCalendar();
  358.    }
  359.    catch ( Exception e )
  360.    {
  361.    }
  362.    return cal;
  363.   }
  364.  }
  365.  /**
  366.   @param strDate
  367.   @param pattern
  368.   @return java.util.Date
  369.   */
  370.  public static synchronized Date parseDateFormat( String strDate, String pattern )
  371.  {
  372.   synchronized ( sdf )
  373.   {
  374.    Date date = null;
  375.    sdf.applyPattern( pattern );
  376.    try
  377.    {
  378.     date = sdf.parse( strDate );
  379.    }
  380.    catch ( Exception e )
  381.    {
  382.    }
  383.    return date;
  384.   }
  385.  }
  386.  public static synchronized int getLastDayOfMonth( int month )
  387.  {
  388.   if ( month < 1 || month > 12 )
  389.   {
  390.    return -1;
  391.   }
  392.   int retn = 0;
  393.   if ( month == 2 )
  394.   {
  395.    if ( isLeapYear() )
  396.    {
  397.     retn = 29;
  398.    }
  399.    else
  400.    {
  401.     retn = dayArray[month - 1];
  402.    }
  403.   }
  404.   else
  405.   {
  406.    retn = dayArray[month - 1];
  407.   }
  408.   return retn;
  409.  }
  410.  public static synchronized int getLastDayOfMonth( int year, int month )
  411.  {
  412.   if ( month < 1 || month > 12 )
  413.   {
  414.    return -1;
  415.   }
  416.   int retn = 0;
  417.   if ( month == 2 )
  418.   {
  419.    if ( isLeapYear( year ) )
  420.    {
  421.     retn = 29;
  422.    }
  423.    else
  424.    {
  425.     retn = dayArray[month - 1];
  426.    }
  427.   }
  428.   else
  429.   {
  430.    retn = dayArray[month - 1];
  431.   }
  432.   return retn;
  433.  }
  434.  public static synchronized boolean isLeapYear()
  435.  {
  436.   Calendar cal = Calendar.getInstance();
  437.   int year = cal.get( Calendar.YEAR );
  438.   return isLeapYear( year );
  439.  }
  440.  public static synchronized boolean isLeapYear( int year )
  441.  {
  442.   /**
  443.    * 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年
  444.    * 3.能被4整除同時能被100整除則不是閏年
  445.    */
  446.   if ( ( year % 400 ) == 0 )
  447.    return true;
  448.   else if ( ( year % 4 ) == 0 )
  449.   {
  450.    if ( ( year % 100 ) == 0 )
  451.     return false;
  452.    else return true;
  453.   }
  454.   else return false;
  455.  }
  456.  /**
  457.   * 判斷指定日期的年份是否是閏年
  458.   * 
  459.   * @param date
  460.   *            指定日期。
  461.   * @return 是否閏年
  462.   */
  463.  public static synchronized boolean isLeapYear( java.util.Date date )
  464.  {
  465.   /**
  466.    * 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年
  467.    * 3.能被4整除同時能被100整除則不是閏年
  468.    */
  469. //  int year = date.getYear();
  470.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  471.   gc.setTime( date );
  472.   int year = gc.get( Calendar.YEAR );
  473.   return isLeapYear( year );
  474.  } 
  475.  public static synchronized boolean isLeapYear( java.util.Calendar gc )
  476.  {
  477.   /**
  478.    * 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年
  479.    * 3.能被4整除同時能被100整除則不是閏年
  480.    */
  481.   int year = gc.get( Calendar.YEAR );
  482.   return isLeapYear( year );
  483.  } 
  484.  /**
  485.   * 得到指定日期的前一個工作日
  486.   * 
  487.   * @param date
  488.   *            指定日期。
  489.   * @return 指定日期的前一個工作日
  490.   */
  491.  public static synchronized java.util.Date getPreviousWeekDay(
  492.   java.util.Date date )
  493.  {
  494.   {
  495.    /**
  496.     * 詳細設計: 
  497.     * 1.如果date是星期日,則減3天 
  498.     * 2.如果date是星期六,則減2天 
  499.     * 3.否則減1天
  500.     */
  501.    GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  502.    gc.setTime( date );
  503.    return getPreviousWeekDay( gc );
  504. //   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  505. //   {
  506. //    case ( Calendar.MONDAY    ):
  507. //     gc.add( Calendar.DATE, -3 );
  508. //     break;
  509. //    case ( Calendar.SUNDAY    ):
  510. //     gc.add( Calendar.DATE, -2 );
  511. //     break;
  512. //    default:
  513. //     gc.add( Calendar.DATE, -1 );
  514. //     break;
  515. //   }
  516. //   return gc.getTime();
  517.   }
  518.  }
  519.  public static synchronized java.util.Date getPreviousWeekDay(
  520.   java.util.Calendar gc )
  521.  {
  522.   {
  523.    /**
  524.     * 詳細設計: 
  525.     * 1.如果date是星期日,則減3天 
  526.     * 2.如果date是星期六,則減2天 
  527.     * 3.否則減1天
  528.     */
  529.    switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  530.    {
  531.     case ( Calendar.MONDAY    ):
  532.      gc.add( Calendar.DATE, -3 );
  533.      break;
  534.     case ( Calendar.SUNDAY    ):
  535.      gc.add( Calendar.DATE, -2 );
  536.      break;
  537.     default:
  538.      gc.add( Calendar.DATE, -1 );
  539.      break;
  540.    }
  541.    return gc.getTime();
  542.   }
  543.  }
  544.  /**
  545.   * 得到指定日期的後一個工作日
  546.   * 
  547.   * @param date
  548.   *            指定日期。
  549.   * @return 指定日期的後一個工作日
  550.   */
  551.  public static synchronized java.util.Date getNextWeekDay(
  552.   java.util.Date date )
  553.  {
  554.   /**
  555.    * 詳細設計: 
  556.    * 1.如果date是星期五,則加3天 
  557.    * 2.如果date是星期六,則加2天
  558.    * 3.否則加1天
  559.    */
  560.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  561.   gc.setTime( date );
  562.   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  563.   {
  564.    case ( Calendar.FRIDAY    ):
  565.     gc.add( Calendar.DATE, 3 );
  566.     break;
  567.    case ( Calendar.SATURDAY    ):
  568.     gc.add( Calendar.DATE, 2 );
  569.     break;
  570.    default:
  571.     gc.add( Calendar.DATE, 1 );
  572.     break;
  573.   }
  574.   return gc.getTime();
  575.  }
  576.  public static synchronized java.util.Calendar getNextWeekDay(
  577.   java.util.Calendar gc )
  578.  {
  579.   /**
  580.    * 詳細設計: 
  581.    * 1.如果date是星期五,則加3天 
  582.    * 2.如果date是星期六,則加2天
  583.    * 3.否則加1天
  584.    */
  585.   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  586.   {
  587.    case ( Calendar.FRIDAY    ):
  588.     gc.add( Calendar.DATE, 3 );
  589.     break;
  590.    case ( Calendar.SATURDAY    ):
  591.     gc.add( Calendar.DATE, 2 );
  592.     break;
  593.    default:
  594.     gc.add( Calendar.DATE, 1 );
  595.     break;
  596.   }
  597.   return gc;
  598.  }
  599.  /**
  600.   * 取得指定日期的下一個月的最後一天
  601.   * 
  602.   * @param date
  603.   *            指定日期。
  604.   * @return 指定日期的下一個月的最後一天
  605.   */
  606.  public static synchronized java.util.Date getLastDayOfNextMonth(
  607.   java.util.Date date )
  608.  {
  609.   /**
  610.    * 詳細設計: 
  611.    * 1.調用getNextMonth設置當前時間 
  612.    * 2.以1爲基礎,調用getLastDayOfMonth
  613.    */
  614.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  615.   gc.setTime( date );
  616.   gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  617.   gc.setTime( DateUtil.getLastDayOfMonth( gc.getTime() ) );
  618.   return gc.getTime();
  619.  }
  620.  /**
  621.   * 取得指定日期的下一個星期的最後一天
  622.   * 
  623.   * @param date
  624.   *            指定日期。
  625.   * @return 指定日期的下一個星期的最後一天
  626.   */
  627.  public static synchronized java.util.Date getLastDayOfNextWeek(
  628.   java.util.Date date )
  629.  {
  630.   /**
  631.    * 詳細設計: 
  632.    * 1.調用getNextWeek設置當前時間 
  633.    * 2.以1爲基礎,調用getLastDayOfWeek
  634.    */
  635.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  636.   gc.setTime( date );
  637.   gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  638.   gc.setTime( DateUtil.getLastDayOfWeek( gc.getTime() ) );
  639.   return gc.getTime();
  640.  }
  641.  /**
  642.   * 取得指定日期的下一個月的第一天
  643.   * 
  644.   * @param date
  645.   *            指定日期。
  646.   * @return 指定日期的下一個月的第一天
  647.   */
  648.  public static synchronized java.util.Date getFirstDayOfNextMonth(
  649.   java.util.Date date )
  650.  {
  651.   /**
  652.    * 詳細設計: 
  653.    * 1.調用getNextMonth設置當前時間 
  654.    * 2.以1爲基礎,調用getFirstDayOfMonth
  655.    */
  656.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  657.   gc.setTime( date );
  658.   gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  659.   gc.setTime( DateUtil.getFirstDayOfMonth( gc.getTime() ) );
  660.   return gc.getTime();
  661.  }
  662.  public static synchronized java.util.Calendar getFirstDayOfNextMonth(
  663.   java.util.Calendar gc )
  664.  {
  665.   /**
  666.    * 詳細設計: 
  667.    * 1.調用getNextMonth設置當前時間 
  668.    * 2.以1爲基礎,調用getFirstDayOfMonth
  669.    */
  670.   gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  671.   gc.setTime( DateUtil.getFirstDayOfMonth( gc.getTime() ) );
  672.   return gc;
  673.  }
  674.  /**
  675.   * 取得指定日期的下一個星期的第一天
  676.   * 
  677.   * @param date
  678.   *            指定日期。
  679.   * @return 指定日期的下一個星期的第一天
  680.   */
  681.  public static synchronized java.util.Date getFirstDayOfNextWeek(
  682.   java.util.Date date )
  683.  {
  684.   /**
  685.    * 詳細設計: 
  686.    * 1.調用getNextWeek設置當前時間 
  687.    * 2.以1爲基礎,調用getFirstDayOfWeek
  688.    */
  689.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  690.   gc.setTime( date );
  691.   gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  692.   gc.setTime( DateUtil.getFirstDayOfWeek( gc.getTime() ) );
  693.   return gc.getTime();
  694.  }
  695.  public static synchronized java.util.Calendar getFirstDayOfNextWeek(
  696.   java.util.Calendar gc )
  697.  {
  698.   /**
  699.    * 詳細設計: 
  700.    * 1.調用getNextWeek設置當前時間 
  701.    * 2.以1爲基礎,調用getFirstDayOfWeek
  702.    */
  703.   gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  704.   gc.setTime( DateUtil.getFirstDayOfWeek( gc.getTime() ) );
  705.   return gc;
  706.  }
  707.  /**
  708.   * 取得指定日期的下一個月
  709.   * 
  710.   * @param date
  711.   *            指定日期。
  712.   * @return 指定日期的下一個月
  713.   */
  714.  public static synchronized java.util.Date getNextMonth( java.util.Date date )
  715.  {
  716.   /**
  717.    * 詳細設計: 
  718.    * 1.指定日期的月份加1
  719.    */
  720.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  721.   gc.setTime( date );
  722.   gc.add( Calendar.MONTH, 1 );
  723.   return gc.getTime();
  724.  }
  725.  public static synchronized java.util.Calendar getNextMonth( java.util.Calendar gc )
  726.  {
  727.   /**
  728.    * 詳細設計: 
  729.    * 1.指定日期的月份加1
  730.    */
  731.   gc.add( Calendar.MONTH, 1 );
  732.   return gc;
  733.  }
  734.  /**
  735.   * 取得指定日期的下一天
  736.   * 
  737.   * @param date
  738.   *            指定日期。
  739.   * @return 指定日期的下一天
  740.   */
  741.  public static synchronized java.util.Date getNextDay( java.util.Date date )
  742.  {
  743.   /**
  744.    * 詳細設計: 1.指定日期加1天
  745.    */
  746.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  747.   gc.setTime( date );
  748.   gc.add( Calendar.DATE, 1 );
  749.   return gc.getTime();
  750.  }
  751.  public static synchronized java.util.Calendar getNextDay( java.util.Calendar gc )
  752.  {
  753.   /**
  754.    * 詳細設計: 1.指定日期加1天
  755.    */
  756.   gc.add( Calendar.DATE, 1 );
  757.   return gc;
  758.  }
  759.  /**
  760.   * 取得指定日期的下一個星期
  761.   * 
  762.   * @param date
  763.   *            指定日期。
  764.   * @return 指定日期的下一個星期
  765.   */
  766.  public static synchronized java.util.Date getNextWeek( java.util.Date date )
  767.  {
  768.   /**
  769.    * 詳細設計: 
  770.    * 1.指定日期加7天
  771.    */
  772.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  773.   gc.setTime( date );
  774.   gc.add( Calendar.DATE, 7 );
  775.   return gc.getTime();
  776.  }
  777.  public static synchronized java.util.Calendar getNextWeek( java.util.Calendar gc )
  778.  {
  779.   /**
  780.    * 詳細設計: 
  781.    * 1.指定日期加7天
  782.    */
  783.   gc.add( Calendar.DATE, 7 );
  784.   return gc;
  785.  }
  786.  /**
  787.   * 取得指定日期的所處星期的最後一天
  788.   * 
  789.   * @param date
  790.   *            指定日期。
  791.   * @return 指定日期的所處星期的最後一天
  792.   */
  793.  public static synchronized java.util.Date getLastDayOfWeek(
  794.   java.util.Date date )
  795.  {
  796.   /**
  797.    * 詳細設計: 
  798.    * 1.如果date是星期日,則加6天 
  799.    * 2.如果date是星期一,則加5天 
  800.    * 3.如果date是星期二,則加4天
  801.    * 4.如果date是星期三,則加3天 
  802.    * 5.如果date是星期四,則加2天 
  803.    * 6.如果date是星期五,則加1天
  804.    * 7.如果date是星期六,則加0天
  805.    */
  806.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  807.   gc.setTime( date );
  808.   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  809.   {
  810.    case ( Calendar.SUNDAY  ):
  811.     gc.add( Calendar.DATE, 6 );
  812.     break;
  813.    case ( Calendar.MONDAY  ):
  814.     gc.add( Calendar.DATE, 5 );
  815.     break;
  816.    case ( Calendar.TUESDAY  ):
  817.     gc.add( Calendar.DATE, 4 );
  818.     break;
  819.    case ( Calendar.WEDNESDAY  ):
  820.     gc.add( Calendar.DATE, 3 );
  821.     break;
  822.    case ( Calendar.THURSDAY  ):
  823.     gc.add( Calendar.DATE, 2 );
  824.     break;
  825.    case ( Calendar.FRIDAY  ):
  826.     gc.add( Calendar.DATE, 1 );
  827.     break;
  828.    case ( Calendar.SATURDAY  ):
  829.     gc.add( Calendar.DATE, 0 );
  830.     break;
  831.   }
  832.   return gc.getTime();
  833.  }
  834.  /**
  835.   * 取得指定日期的所處星期的第一天
  836.   * 
  837.   * @param date
  838.   *            指定日期。
  839.   * @return 指定日期的所處星期的第一天
  840.   */
  841.  public static synchronized java.util.Date getFirstDayOfWeek(
  842.   java.util.Date date )
  843.  {
  844.   /**
  845.    * 詳細設計: 
  846.    * 1.如果date是星期日,則減0天 
  847.    * 2.如果date是星期一,則減1天 
  848.    * 3.如果date是星期二,則減2天
  849.    * 4.如果date是星期三,則減3天 
  850.    * 5.如果date是星期四,則減4天 
  851.    * 6.如果date是星期五,則減5天
  852.    * 7.如果date是星期六,則減6天
  853.    */
  854.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  855.   gc.setTime( date );
  856.   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  857.   {
  858.    case ( Calendar.SUNDAY  ):
  859.     gc.add( Calendar.DATE, 0 );
  860.     break;
  861.    case ( Calendar.MONDAY  ):
  862.     gc.add( Calendar.DATE, -1 );
  863.     break;
  864.    case ( Calendar.TUESDAY  ):
  865.     gc.add( Calendar.DATE, -2 );
  866.     break;
  867.    case ( Calendar.WEDNESDAY  ):
  868.     gc.add( Calendar.DATE, -3 );
  869.     break;
  870.    case ( Calendar.THURSDAY  ):
  871.     gc.add( Calendar.DATE, -4 );
  872.     break;
  873.    case ( Calendar.FRIDAY  ):
  874.     gc.add( Calendar.DATE, -5 );
  875.     break;
  876.    case ( Calendar.SATURDAY  ):
  877.     gc.add( Calendar.DATE, -6 );
  878.     break;
  879.   }
  880.   return gc.getTime();
  881.  }
  882.  public static synchronized java.util.Calendar getFirstDayOfWeek(
  883.   java.util.Calendar gc )
  884.  {
  885.   /**
  886.    * 詳細設計: 
  887.    * 1.如果date是星期日,則減0天 
  888.    * 2.如果date是星期一,則減1天 
  889.    * 3.如果date是星期二,則減2天
  890.    * 4.如果date是星期三,則減3天 
  891.    * 5.如果date是星期四,則減4天 
  892.    * 6.如果date是星期五,則減5天
  893.    * 7.如果date是星期六,則減6天
  894.    */
  895.   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  896.   {
  897.    case ( Calendar.SUNDAY  ):
  898.     gc.add( Calendar.DATE, 0 );
  899.     break;
  900.    case ( Calendar.MONDAY  ):
  901.     gc.add( Calendar.DATE, -1 );
  902.     break;
  903.    case ( Calendar.TUESDAY  ):
  904.     gc.add( Calendar.DATE, -2 );
  905.     break;
  906.    case ( Calendar.WEDNESDAY  ):
  907.     gc.add( Calendar.DATE, -3 );
  908.     break;
  909.    case ( Calendar.THURSDAY  ):
  910.     gc.add( Calendar.DATE, -4 );
  911.     break;
  912.    case ( Calendar.FRIDAY  ):
  913.     gc.add( Calendar.DATE, -5 );
  914.     break;
  915.    case ( Calendar.SATURDAY  ):
  916.     gc.add( Calendar.DATE, -6 );
  917.     break;
  918.   }
  919.   return gc;
  920.  }
  921.  /**
  922.   * 取得指定日期的所處月份的最後一天
  923.   * 
  924.   * @param date
  925.   *            指定日期。
  926.   * @return 指定日期的所處月份的最後一天
  927.   */
  928.  public static synchronized java.util.Date getLastDayOfMonth(
  929.   java.util.Date date )
  930.  {
  931.   /**
  932.    * 詳細設計: 
  933.    * 1.如果date在1月,則爲31日 
  934.    * 2.如果date在2月,則爲28日 
  935.    * 3.如果date在3月,則爲31日
  936.    * 4.如果date在4月,則爲30日 
  937.    * 5.如果date在5月,則爲31日 
  938.    * 6.如果date在6月,則爲30日
  939.    * 7.如果date在7月,則爲31日 
  940.    * 8.如果date在8月,則爲31日 
  941.    * 9.如果date在9月,則爲30日
  942.    * 10.如果date在10月,則爲31日 
  943.    * 11.如果date在11月,則爲30日 
  944.    * 12.如果date在12月,則爲31日
  945.    * 1.如果date在閏年的2月,則爲29日
  946.    */
  947.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  948.   gc.setTime( date );
  949.   switch ( gc.get( Calendar.MONTH ) )
  950.   {
  951.    case 0:
  952.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  953.     break;
  954.    case 1:
  955.     gc.set( Calendar.DAY_OF_MONTH, 28 );
  956.     break;
  957.    case 2:
  958.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  959.     break;
  960.    case 3:
  961.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  962.     break;
  963.    case 4:
  964.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  965.     break;
  966.    case 5:
  967.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  968.     break;
  969.    case 6:
  970.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  971.     break;
  972.    case 7:
  973.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  974.     break;
  975.    case 8:
  976.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  977.     break;
  978.    case 9:
  979.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  980.     break;
  981.    case 10:
  982.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  983.     break;
  984.    case 11:
  985.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  986.     break;
  987.   }
  988.   //檢查閏年
  989.   if ( ( gc.get( Calendar.MONTH ) == Calendar.FEBRUARY )
  990.    && ( isLeapYear( gc.get( Calendar.YEAR ) ) ) )
  991.   {
  992.    gc.set( Calendar.DAY_OF_MONTH, 29 );
  993.   }
  994.   return gc.getTime();
  995.  }
  996.  public static synchronized java.util.Calendar getLastDayOfMonth(
  997.   java.util.Calendar gc )
  998.  {
  999.   /**
  1000.    * 詳細設計: 
  1001.    * 1.如果date在1月,則爲31日 
  1002.    * 2.如果date在2月,則爲28日 
  1003.    * 3.如果date在3月,則爲31日
  1004.    * 4.如果date在4月,則爲30日 
  1005.    * 5.如果date在5月,則爲31日 
  1006.    * 6.如果date在6月,則爲30日
  1007.    * 7.如果date在7月,則爲31日 
  1008.    * 8.如果date在8月,則爲31日 
  1009.    * 9.如果date在9月,則爲30日
  1010.    * 10.如果date在10月,則爲31日 
  1011.    * 11.如果date在11月,則爲30日 
  1012.    * 12.如果date在12月,則爲31日
  1013.    * 1.如果date在閏年的2月,則爲29日
  1014.    */
  1015.   switch ( gc.get( Calendar.MONTH ) )
  1016.   {
  1017.    case 0:
  1018.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1019.     break;
  1020.    case 1:
  1021.     gc.set( Calendar.DAY_OF_MONTH, 28 );
  1022.     break;
  1023.    case 2:
  1024.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1025.     break;
  1026.    case 3:
  1027.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  1028.     break;
  1029.    case 4:
  1030.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1031.     break;
  1032.    case 5:
  1033.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  1034.     break;
  1035.    case 6:
  1036.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1037.     break;
  1038.    case 7:
  1039.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1040.     break;
  1041.    case 8:
  1042.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  1043.     break;
  1044.    case 9:
  1045.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1046.     break;
  1047.    case 10:
  1048.     gc.set( Calendar.DAY_OF_MONTH, 30 );
  1049.     break;
  1050.    case 11:
  1051.     gc.set( Calendar.DAY_OF_MONTH, 31 );
  1052.     break;
  1053.   }
  1054.   //檢查閏年
  1055.   if ( ( gc.get( Calendar.MONTH ) == Calendar.FEBRUARY )
  1056.    && ( isLeapYear( gc.get( Calendar.YEAR ) ) ) )
  1057.   {
  1058.    gc.set( Calendar.DAY_OF_MONTH, 29 );
  1059.   }
  1060.   return gc;
  1061.  }
  1062.  /**
  1063.   * 取得指定日期的所處月份的第一天
  1064.   * 
  1065.   * @param date
  1066.   *            指定日期。
  1067.   * @return 指定日期的所處月份的第一天
  1068.   */
  1069.  public static synchronized java.util.Date getFirstDayOfMonth( java.util.Date date )
  1070.  {
  1071.   /**
  1072.    * 詳細設計: 1.設置爲1號
  1073.    */
  1074.   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  1075.   gc.setTime( date );
  1076.   gc.set( Calendar.DAY_OF_MONTH, 1 );
  1077.   return gc.getTime();
  1078.  }
  1079.  public static synchronized java.util.Calendar getFirstDayOfMonth( java.util.Calendar gc )
  1080.  {
  1081.   /**
  1082.    * 詳細設計: 1.設置爲1號
  1083.    */
  1084.   gc.set( Calendar.DAY_OF_MONTH, 1 );
  1085.   return gc;
  1086.  }
  1087.  /**
  1088.   * 將日期對象轉換成爲指定ORA日期、時間格式的字符串形式。如果日期對象爲空,返回 一個空字符串對象,而不是一個空對象。
  1089.   * 
  1090.   * @param theDate
  1091.   *            將要轉換爲字符串的日期對象。
  1092.   * @param hasTime
  1093.   *            如果返回的字符串帶時間則爲true
  1094.   * @return 轉換的結果
  1095.   */
  1096.  public static synchronized String toOraString( Date theDate, boolean hasTime )
  1097.  {
  1098.   /**
  1099.    * 詳細設計: 
  1100.    * 1.如果有時間,則設置格式爲getOraDateTimeFormat()的返回值
  1101.    * 2.否則設置格式爲getOraDateFormat()的返回值 
  1102.    * 3.調用toString(Date theDate, DateFormat
  1103.    * theDateFormat)
  1104.    */
  1105.   DateFormat theFormat;
  1106.   if ( hasTime )
  1107.   {
  1108.    theFormat = getOraDateTimeFormat();
  1109.   }
  1110.   else
  1111.   {
  1112.    theFormat = getOraDateFormat();
  1113.   }
  1114.   return toString( theDate, theFormat );
  1115.  }
  1116.  /**
  1117.   * 將日期對象轉換成爲指定日期、時間格式的字符串形式。如果日期對象爲空,返回 一個空字符串對象,而不是一個空對象。
  1118.   * 
  1119.   * @param theDate
  1120.   *            將要轉換爲字符串的日期對象。
  1121.   * @param hasTime
  1122.   *            如果返回的字符串帶時間則爲true
  1123.   * @return 轉換的結果
  1124.   */
  1125.  public static synchronized String toString( Date theDate, boolean hasTime )
  1126.  {
  1127.   /**
  1128.    * 詳細設計: 
  1129.    * 1.如果有時間,則設置格式爲getDateTimeFormat的返回值 
  1130.    * 2.否則設置格式爲getDateFormat的返回值
  1131.    * 3.調用toString(Date theDate, DateFormat theDateFormat)
  1132.    */
  1133.   DateFormat theFormat;
  1134.   if ( hasTime )
  1135.   {
  1136.    theFormat = getDateTimeFormat();
  1137.   }
  1138.   else
  1139.   {
  1140.    theFormat = getDateFormat();
  1141.   }
  1142.   return toString( theDate, theFormat );
  1143.  }
  1144.  /**
  1145.   * 標準日期格式
  1146.   */
  1147.  private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
  1148.   "MM/dd/yyyy" );
  1149.  /**
  1150.   * 標準時間格式
  1151.   */
  1152.  private static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
  1153.   "MM/dd/yyyy HH:mm" );
  1154.  /**
  1155.   * 帶時分秒的標準時間格式
  1156.   */
  1157.  private static final SimpleDateFormat DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
  1158.   "MM/dd/yyyy HH:mm:ss" );
  1159.  /**
  1160.   * ORA標準日期格式
  1161.   */
  1162.  private static final SimpleDateFormat ORA_DATE_FORMAT = new SimpleDateFormat(
  1163.   "yyyyMMdd" );
  1164.  /**
  1165.   * ORA標準時間格式
  1166.   */
  1167.  private static final SimpleDateFormat ORA_DATE_TIME_FORMAT = new SimpleDateFormat(
  1168.   "yyyyMMddHHmm" );
  1169.  /**
  1170.   * 帶時分秒的ORA標準時間格式
  1171.   */
  1172.  private static final SimpleDateFormat ORA_DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
  1173.   "yyyyMMddHHmmss" );
  1174.  /**
  1175.   * 創建一個標準日期格式的克隆
  1176.   * 
  1177.   * @return 標準日期格式的克隆
  1178.   */
  1179.  public static synchronized DateFormat getDateFormat()
  1180.  {
  1181.   /**
  1182.    * 詳細設計: 1.返回DATE_FORMAT
  1183.    */
  1184.   SimpleDateFormat theDateFormat = ( SimpleDateFormat ) 
  1185.    DATE_FORMAT.clone();
  1186.   theDateFormat.setLenient( false );
  1187.   return theDateFormat;
  1188.  }
  1189.  /**
  1190.   * 創建一個標準時間格式的克隆
  1191.   * 
  1192.   * @return 標準時間格式的克隆
  1193.   */
  1194.  public static synchronized DateFormat getDateTimeFormat()
  1195.  {
  1196.   /**
  1197.    * 詳細設計: 1.返回DATE_TIME_FORMAT
  1198.    */
  1199.   SimpleDateFormat theDateTimeFormat = ( SimpleDateFormat ) DATE_TIME_FORMAT
  1200.    .clone();
  1201.   theDateTimeFormat.setLenient( false );
  1202.   return theDateTimeFormat;
  1203.  }
  1204.  /**
  1205.   * 創建一個標準ORA日期格式的克隆
  1206.   * 
  1207.   * @return 標準ORA日期格式的克隆
  1208.   */
  1209.  public static synchronized DateFormat getOraDateFormat()
  1210.  {
  1211.   /**
  1212.    * 詳細設計: 1.返回ORA_DATE_FORMAT
  1213.    */
  1214.   SimpleDateFormat theDateFormat = ( SimpleDateFormat ) ORA_DATE_FORMAT
  1215.    .clone();
  1216.   theDateFormat.setLenient( false );
  1217.   return theDateFormat;
  1218.  }
  1219.  /**
  1220.   * 創建一個標準ORA時間格式的克隆
  1221.   * 
  1222.   * @return 標準ORA時間格式的克隆
  1223.   */
  1224.  public static synchronized DateFormat getOraDateTimeFormat()
  1225.  {
  1226.   /**
  1227.    * 詳細設計: 1.返回ORA_DATE_TIME_FORMAT
  1228.    */
  1229.   SimpleDateFormat theDateTimeFormat = ( SimpleDateFormat ) 
  1230.    ORA_DATE_TIME_FORMAT.clone();
  1231.   theDateTimeFormat.setLenient( false );
  1232.   return theDateTimeFormat;
  1233.  }
  1234.  /**
  1235.   * 將一個日期對象轉換成爲指定日期、時間格式的字符串。 如果日期對象爲空,返回一個空字符串,而不是一個空對象。
  1236.   * 
  1237.   * @param theDate
  1238.   *            要轉換的日期對象
  1239.   * @param theDateFormat
  1240.   *            返回的日期字符串的格式
  1241.   * @return 轉換結果
  1242.   */
  1243.  public static synchronized String toString( Date theDate,
  1244.   DateFormat theDateFormat )
  1245.  {
  1246.   /**
  1247.    * 詳細設計: 
  1248.    * 1.theDate爲空,則返回"" 
  1249.    * 2.否則使用theDateFormat格式化
  1250.    */
  1251.   if ( theDate == null ) 
  1252.    return "";
  1253.   return theDateFormat.format( theDate );
  1254.  }
  1255. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章