?? mydate.java
字號:
/*<%--////////////////////////////////////////////////////GTON原創作品-Struts圖書館管理系統//////////////////////////////////////////////////////////////
////////////所用技術:jsp2.0+servlet2.4+jstl1.1+Struts1.2+sqlserver2000+tomcat5.5/////////////////////////////////////
/////////////////////////////////////////////////////專業制作網站 專業制作畢業設計////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////QQ:27612285//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////Mail:punkwang@126.com////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////WEB:www.98202.com www.630cn.com//////////////////////////////////////////////////////
////////////////////////////////////////////////////qq群:20665503////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////求高薪工作一個有意者聯系本人/////////////////////////////////////////////////////////
////////////////////////////////////////////////////Phone:010-81110277(王先生)///////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--%>
<%--接 畢業設計業務 網站業務 商業網站 個人網站 商城系統 企業主頁 JSP ASP.net PHP !!!
業務種類
網站業務: 商業網站 個人網站 商城系統 企業主頁 等中小型網站(asp, jsp ,php ,asp.net)
畢業設計業務:java(j2ee j2se) vb delphi php .net等畢設業務
模塊業務:各種中小型模塊 java .net
如有需要 價格細談 QQ:27612285
我的網站
HTTP://www.98202.com
HTTP://www.do3w.com
HTTP://www.201cn.com
HTTP://www.630cn.com--%>
*/package com.gton.util;
import java.text.*;
import java.util.*;
import java.util.logging.SimpleFormatter;
public class MyDate {
public MyDate() {
}
public static String getDate() {
SimpleDateFormat lFormat;
Calendar MyDate = Calendar.getInstance();
MyDate.setTime(new java.util.Date());
java.util.Date date = MyDate.getTime();
lFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String gRtnStr = lFormat.format(date);
return gRtnStr;
}
/** 注意格里歷和儒略歷交接時的日期差別 */
private static transient int gregorianCutoverYear = 1582;
/** 閏年中每月天數 */
private static final int[] DAYS_P_MONTH_LY = {
31, 29, 31, 30, 31, 30, 31, 31,
30, 31, 30, 31};
/** 平年中每月天數 */
private static final int[] DAYS_P_MONTH_CY = {
31, 28, 31, 30, 31, 30, 31, 31,
30, 31, 30, 31};
/** 代表數組里的年、月、日 */
private static final int Y = 0, M = 1, D = 2;
/** 參與運算用 */
private int[] ymd = null;
/**
* 檢查傳入的參數是否合法的日期
* @param date
* @throws IllegalArgumentException
*/
public static void validate(String date) throws IllegalArgumentException {
int[] ymd = splitYMD(date);
if (ymd[M] == 0 || ymd[M] > 12) {
throw new IllegalArgumentException("月份數值錯誤");
}
if (true == isLeapYear(ymd[0])) {
if (ymd[D] == 0 || ymd[D] > DAYS_P_MONTH_LY[ymd[M] - 1]) {
throw new IllegalArgumentException("日期數值錯誤");
}
} else {
if (ymd[D] == 0 || ymd[D] > DAYS_P_MONTH_CY[ymd[M] - 1]) {
throw new IllegalArgumentException("日期數值錯誤");
}
}
}
/**
* 檢查傳入的參數代表的年份是否為閏年
* @param year
* @return
*/
public static boolean isLeapYear(int year) {
return year >= gregorianCutoverYear ?
((year % 4 == 0) && ((year % 100 != 0) ||
(year % 400 == 0))) : // Gregorian
(year % 4 == 0); // Julian
}
/**
* 日期加1天,注意這里沒有考慮儒略歷和格里歷交接時相差的10天
* @param year
* @param month
* @param day
* @return
*/
private int[] addOneDay(int year, int month, int day) {
if (isLeapYear(year)) {
day++;
if (day > DAYS_P_MONTH_LY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
} else {
day++;
if (day > DAYS_P_MONTH_CY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
}
int[] ymd = {
year, month, day};
return ymd;
}
/**
* 以循環的方式計算日期加法
* @param date
* @param days
* @return
*/
public String addDaysByLoop(String date, int days) {
validate(date);
int[] ymd = splitYMD(date);
for (int i = 0; i < days; i++) {
ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
}
return formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(ymd[D]);
}
/**
* 日期減1天,注意這里沒有考慮儒略歷和格里歷交接時相差的10天
* @param year
* @param month
* @param day
* @return
*/
private int[] reduceOneDay(int year, int month, int day) {
if (isLeapYear(year)) {
day--;
if (day <= 0) {
month--;
if (month < 1) {
year--;
month = 12;
}
day = DAYS_P_MONTH_LY[month - 1];
}
} else {
day--;
if (day <= 0) {
month--;
if (month < 1) {
year--;
month = 12;
}
day = DAYS_P_MONTH_CY[month - 1];
}
}
int[] ymd = {
year, month, day};
return ymd;
}
/**
* 以循環的方式計算日期減法
* @param date
* @param days
* @return
*/
public String reduceDaysByLoop(String date, int days) {
validate(date);
int[] ymd = splitYMD(date);
for (int i = 0; i < days; i++) {
ymd = reduceOneDay(ymd[Y], ymd[M], ymd[D]);
}
return formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(ymd[D]);
}
/**
* 指定日期加上指定的天數的操作
* @param date
* @param days
* @return
* @throws IllegalArgumentException
*/
public String addDays(Date date, int days) throws IllegalArgumentException {
return addDays(formatDate(date), days);
}
/**
* 指定日期加上指定的天數的操作
* @param date
* @param days
* @return
* @throws IllegalArgumentException
*/
public String addDays(String date, int days) throws
IllegalArgumentException {
validate(date);
ymd = splitYMD(date);
if (isLeapYear(ymd[Y])) {
ymd[D] += days;
if (ymd[D] > DAYS_P_MONTH_LY[ymd[M] - 1]) {
ymd[M]++;
ymd[D] = ymd[D] - DAYS_P_MONTH_LY[ymd[M] - 1 - 1];
if (ymd[M] > 12) {
ymd[M] -= 12;
ymd[Y]++;
}
if (ymd[D] > DAYS_P_MONTH_LY[ymd[M] - 1]) {
addDays(formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(DAYS_P_MONTH_LY[ymd[M] - 1]),
ymd[D] - DAYS_P_MONTH_LY[ymd[M] - 1]);
}
}
} else {
ymd[D] += days;
if (ymd[D] > DAYS_P_MONTH_CY[ymd[M] - 1]) {
ymd[M]++;
ymd[D] = ymd[D] - DAYS_P_MONTH_CY[ymd[M] - 1 - 1];
if (ymd[M] > 12) {
ymd[M] -= 12;
ymd[Y]++;
}
if (ymd[D] > DAYS_P_MONTH_CY[ymd[M] - 1]) {
addDays(formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(DAYS_P_MONTH_CY[ymd[M] - 1]),
ymd[D] - DAYS_P_MONTH_CY[ymd[M] - 1]);
}
}
}
return formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(ymd[D]);
}
/**
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -