⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datecontrol.java

📁 本代码是一个权限管理系统源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.seavision.PermissionManage.common;

/**
 * <p>Title: Perfect Toolkit Box</p>
 * <p>Description: Seavision develop toolkit box</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: seavision</p>
 * @author kk
 * @version 1.0
 */


import java.util.Date;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Vector;

public class DateControl
{

  /**
   * 时间格式 : 年-月-日
   */
  public static final String FORMAT1 = "yyyy-MM-dd";

  /**
   * 时间格式 : 年.月.日<br>
   */
  public static final String FORMAT2 = "yyyy.MM.dd";

  /**
   * 时间格式 : 年/月/日
   */
  public static final String FORMAT3 = "yyyy/MM/dd";

  /**
   * 时间格式 : 年-月-日 时:分
   */
  public static final String FORMAT4 = "yyyy-MM-dd HH:mm";

  /**
   * 时间格式 : 年.月.日 时:分
   */
  public static final String FORMAT5 = "yyyy.MM.dd HH:mm";

  /**
   * 时间格式 : 年/月/日 时:分
   */
  public static final String FORMAT6 = "yyyy/MM/dd HH:mm";

  /**
   * 时间格式 : 年-月-日 时:分:秒
   */
  public static final String FORMAT7 = "yyyy-MM-dd HH:mm:ss";

  /**
   * 时间格式 : 年.月.日 时:分:秒
   */
  public static final String FORMAT8 = "yyyy.MM.dd HH:mm:ss";

  /**
   * 时间格式 : 年/月/日 时:分:秒
   */
  public static final String FORMAT9 = "yyyy/MM/dd HH:mm:ss";

  /**
   *
   */
  public DateControl()
  {

  }

  /**返回当前时间,格式为 "年-月-日".
   * @return 字符串型当前日期
   * @author 刘凯
   */
  public static String getCurrentDate()
  {
    Date date = new Date();

    SimpleDateFormat formatter = new SimpleDateFormat(FORMAT1);

    String currentTime = formatter.format(date);

    return currentTime;
  }



  /**返回当前时间
   * @param format 日期格式类型
   * @return 指定格式的字符串型当前日期
   * @author 刘凯
   */
  public static String getCurrentDate(String format)
  {
    Date date = new Date();

    SimpleDateFormat formatter = new SimpleDateFormat(format);

    String currentTime = formatter.format(date);

    return currentTime;
  }

  /**
   * 返回当前星期几
   */
  public static String getCurrentWeekName(GregorianCalendar gregorianCalendar){

    if(gregorianCalendar==null)  gregorianCalendar=new GregorianCalendar();

    String name="星期一";

    int i=gregorianCalendar.get(gregorianCalendar.DAY_OF_WEEK);

    switch(i){
      case 1: name="星期日"; break;
      case 2: name="星期一"; break;
      case 3: name="星期二"; break;
      case 4: name="星期三"; break;
      case 5: name="星期四"; break;
      case 6: name="星期五"; break;
      case 7: name="星期六"; break;
    }

    return name;
  }



  /**
   * 返回当前日
   * @return 日数 范围 : 1 - 30(31,28,29)
   */
  public static int getCurrentDay()
  {
    return new GregorianCalendar().get(GregorianCalendar.DAY_OF_MONTH);
  }


  /**
   * 返回当前月
   * @return 月数 范围 : 1 - 12
   */
  public static int getCurrentMonth()
  {
    return new GregorianCalendar().get(GregorianCalendar.MONTH) + 1;
  }


  /**
   * 返回当前年
   * @return 年份
   */
  public static int getCurrentYear()
  {
    return new GregorianCalendar().get(GregorianCalendar.YEAR);
  }


  /**
   * 获得指定年、月的最大日期数
   * @param year 年
   * @param month 月
   * @return 该年、月最大的日
   */
  public static int getMaxDayForYearAndMonth(int year, int month)
  {
    GregorianCalendar calendar = new GregorianCalendar(year, month-1, 1);

    return calendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
  }


  /**根据给定的时间长度获取从当日起之前的时间
   * @param dateLength 自今日起向前推进的时间的天数
   * @return 开始日期的字符串型时间,格式为 "年-月-日"
   * @author 刘凯
   */
  public static String getStartDate(int dateLength)
  {
    Date date = new Date();

    long longDate = date.getTime();

    for( int i = 1; i <= dateLength; i++ )
    {
      longDate = longDate - 24*60*60*1000 ;
    }

    date.setTime( longDate );

    SimpleDateFormat formatter = new SimpleDateFormat(FORMAT1);

    String startTime = formatter.format(date);

    return startTime;
  }


  /**根据给定的时间长度获取从当日起之前的时间,格式由参数 format 指定
   * @param dateLength 推进时间,单位:天数
   * @param format 返回时间的格式
   * @return 开始日期的字符串型时间
   * @author 刘凯
   */
  public static String getStartDate(int dateLength,String format)
  {
    Date date = new Date();

    long longDate = date.getTime();

    for( int i = 1; i <= dateLength; i++ )
    {
      longDate = longDate - 24*60*60*1000 ;
    }

    date.setTime( longDate );

    SimpleDateFormat formatter = new SimpleDateFormat(format);

    String startTime = formatter.format(date);

    return startTime;
  }



  /**根据给定的时间长度获取从当日起之后的时间
   * @param dateLength 自今日起向后推进的时间,单位:天数
   * @return 终止日期的字符串型时间,格式为 "年-月-日"
   * @author 刘凯
   */
  public static String getEndDate(int dateLength)
  {
    Date date = new Date();

    long longDate = date.getTime();

    for( int i = 1; i <= dateLength; i++ )
    {
      longDate = longDate + 24*60*60*1000 ;
    }

    date.setTime( longDate );

    SimpleDateFormat formatter = new SimpleDateFormat(FORMAT1);

    String endTime = formatter.format(date);

    return endTime;
  }


  /**根据给定的时间长度获取从当日起之后的时间,格式由参数 format 指定
   * @author 刘凯
   * @param dateLength 推后时间,单位:天数
   * @param format 返回时间的格式
   * @return 终止日期的字符串型时间
   */
  public static String getEndDate(int dateLength,String format)
  {
    Date date = new Date();

    long longDate = date.getTime();

    for( int i = 1; i <= dateLength; i++ )
    {
      longDate = longDate + 24*60*60*1000 ;
    }

    date.setTime( longDate );

    SimpleDateFormat formatter = new SimpleDateFormat(format);

    String startTime = formatter.format(date);

    return startTime;
  }



  /**
   * 获得任意指定日期的星期一
   * @param date 日期
   * @return 指定日期星期一的号数
   */
  public static String getMondayForDate(String date)
  {
    int year = Integer.parseInt( date.substring(0, date.indexOf("-")) );
    int month = Integer.parseInt( date.substring( date.indexOf("-") + 1, date.lastIndexOf("-")) );
    int day = Integer.parseInt( date.substring( date.lastIndexOf("-") + 1) );

    GregorianCalendar calendar;

    while(true)
    {
      calendar = new GregorianCalendar(year, month-1, day);

      if( calendar.get(GregorianCalendar.DAY_OF_WEEK) != 2 )
        day--;
      else
        break;
    }

    return calendar.get(GregorianCalendar.YEAR) + "-" + (calendar.get(GregorianCalendar.MONTH)+1) +
        "-" + calendar.get(GregorianCalendar.DAY_OF_MONTH);
  }



  /**
   * 获得任意指定日期的星期六
   * @param date 日期
   * @return 指定日期星期六的号数
   */
  public static String getSaturdayForDate(String date)
  {
    int year = Integer.parseInt( date.substring(0, date.indexOf("-")) );
    int month = Integer.parseInt( date.substring( date.indexOf("-") + 1, date.lastIndexOf("-")) );
    int day = Integer.parseInt( date.substring( date.lastIndexOf("-") + 1) );

    GregorianCalendar calendar;

    while(true)
    {
      calendar = new GregorianCalendar(year, month-1, day);

      if( calendar.get(GregorianCalendar.DAY_OF_WEEK) != 6 )
        day++;
      else
        break;
    }

    return calendar.get(GregorianCalendar.YEAR) + "-" + (calendar.get(GregorianCalendar.MONTH)+1) +
        "-" + calendar.get(GregorianCalendar.DAY_OF_MONTH);
  }



  /**判断参数 date 是否为合法日期,日期格式:年-月-日
   * @author 刘凯
   * @param date 欲判断的日期
   * @return 若参数为合法日期,返回 true; 若不合法则返回 false;
   */
  public static boolean isLegalDate(String date)
  {
    try
    {

      String [] tempDate = date.split("-");

      int year = Integer.parseInt(tempDate[0]);
      int month = Integer.parseInt(tempDate[1]);
      int day = Integer.parseInt(tempDate[2]);

      GregorianCalendar gregorianCalendar = new GregorianCalendar();

      gregorianCalendar.set(year, month - 1, 1);

      int maxiumDay = gregorianCalendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);

      if( day > maxiumDay || day <= 0 )
      {
        return false;
      }

    }
    catch(NumberFormatException nfe)
    {
      return false;
    }
    catch(Exception e)
    {
      return false;
    }

    return true;
  }



  /**判断参数 datetime 是否为合法日期,日期格式可以为: 年-月-日 时:分 或 年-月-日 时:分:秒
   * @author 刘凯
   * @param datetime 欲判断的日期
   * @return
   */
  public static boolean isLegalDatetime(String datetime)
  {
    int cut = datetime.indexOf(" ");

    String date = datetime.substring(0, cut);
    String time = datetime.substring(cut + 1);

    boolean flag = isLegalDate(date);

    String [] tempTime = time.split(":");

    for( int i=0; i<tempTime.length; i++ )
    {
      int temp = Integer.parseInt(tempTime[i]);

      if( i == 0 )
      {
        if( temp < 0 || temp > 23 )
        {
          return false;
        }
      }
      else
      {
        if( temp < 0 || temp > 59 )
        {
          return false;
        }
      }
    }

    return true && flag ;
  }


  /**判断参数组合是否为合法日期
   * @author 刘凯
   * @param year 年
   * @param month 月
   * @param day 日
   * @return 若参数组合为合法日期,返回 true; 若不合法则返回 false;
   */
  public static boolean isLegal(int year, int month, int day)
  {

    GregorianCalendar gregorianCalendar = new GregorianCalendar();

    gregorianCalendar.set(year, month - 1, 1);

    int maxiumDay = gregorianCalendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);

    if( day > maxiumDay || day <= 0 )
    {
      return false;
    }

    return true;

  }



  /**判断参数组合是否为合法日期
   * @author 刘凯
   * @param year 年
   * @param month 月
   * @param day 日
   * @param hour 时
   * @param minute 分
   * @return  若参数组合为合法日期,返回 true; 若不合法则返回 false;
   */
  public static boolean isLegal(int year, int month, int day, int hour, int minute)
  {

    boolean flag;

    flag = isLegal(year, month, day);

    if( hour > 23 || hour < 0 || minute > 59 || minute < 0 )
    {
      return false;
    }
    else
    {
      return true && flag;
    }

  }


  /**判断给出的两个日期组合的前后是否正确
   * @author 刘凯
   * @param startYear 起始年
   * @param startMonth 起始月
   * @param startDay 起始日
   * @param startHour 起始时
   * @param startMinute 起始分
   * @param endYear 终止年
   * @param endMonth 终止月
   * @param endDay 终止日
   * @param endHour 终止时
   * @param endMinute 终止分
   * @return  若时间组合顺序正确,返回 true; 否则返回 false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -