📄 datecontrol.java
字号:
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 + -