?? dateutil.java
字號:
package com.frame.util;
import java.util.Calendar;
import java.util.Date;
import com.frame.exception.FrameException;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author <a href=mailto:wolf_chy@sina.com>Steven Cheng</a>
* @version 1.0
*/
public class DateUtil {
/**
* 得到當前日期(java.sql.Date類型),注意:沒有時間,只有日期
* @return 當前日期
*/
public static java.sql.Date getDate() {
Calendar oneCalendar = Calendar.getInstance();
return getDate(
oneCalendar.get(Calendar.YEAR),
oneCalendar.get(Calendar.MONTH) + 1,
oneCalendar.get(Calendar.DATE));
}
/**
* 根據所給年、月、日,得到日期(java.sql.Date類型),注意:沒有時間,只有日期。
* 年、月、日不合法,會拋IllegalArgumentException(不需要catch)
* @param yyyy 4位年
* @param MM 月
* @param dd 日
* @return 日期
*/
public static java.sql.Date getDate(int yyyy, int MM, int dd) {
if (!verityDate(yyyy, MM, dd))
throw new IllegalArgumentException("This is illegimate date!");
Calendar oneCalendar = Calendar.getInstance();
oneCalendar.clear();
oneCalendar.set(yyyy, MM - 1, dd);
return new java.sql.Date(oneCalendar.getTime().getTime());
}
/**
* 根據所給年、月、日,檢驗是否為合法日期。
* @param yyyy 4位年
* @param MM 月
* @param dd 日
* @return
*/
public static boolean verityDate(int yyyy, int MM, int dd) {
boolean flag = false;
if (MM >= 1 && MM <= 12 && dd >= 1 && dd <= 31) {
if (MM == 4 || MM == 6 || MM == 9 || MM == 11) {
if (dd <= 30)
flag = true;
} else if (MM == 2) {
if (yyyy % 100 != 0 && yyyy % 4 == 0 || yyyy % 400 == 0) {
if (dd <= 29)
flag = true;
} else if (dd <= 28)
flag = true;
} else
flag = true;
}
return flag;
}
/**
* 檢查日期字符串是否正確。格式:yyyy-MM-dd
* @param dateString
* @return
*/
public static boolean checkDateString(String dateString) {
boolean check = false;
try {
Date oneDay = TypeCast.stringToDate(dateString, "", true);
Calendar ca = Calendar.getInstance();
ca.clear();
ca.setTime(oneDay);
int yyyy = ca.get(Calendar.YEAR);
if (yyyy >= 1000 && yyyy <= 9999)
check = true;
} catch (FrameException e) {
check = false;
}
return check;
}
/**
* 得到日期字符串的年,必須是4位數字。
* @param dateStr
* @return
* @throws AppException
*/
public static String getYear(String dateStr) throws FrameException {
Date oneDay = TypeCast.stringToDate(dateStr, "", true);
Calendar ca = Calendar.getInstance();
ca.clear();
ca.setTime(oneDay);
int yyyy = ca.get(Calendar.YEAR);
if (yyyy < 1000 || yyyy > 9999)
throw new FrameException(
GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
"| 錯誤的年! |");
return "" + yyyy;
}
/**
*根據所給的起始,終止時間來計算間隔天數
*@param startDate
*@param endDate
*@return 間隔天數
*/
public static int getIntervalDay(
java.sql.Date startDate,
java.sql.Date endDate) {
long startdate = startDate.getTime();
long enddate = endDate.getTime();
long interval = enddate - startdate;
int intervalday = (int) interval / (1000 * 60 * 60 * 24);
return intervalday;
}
/**
*獲取輸入時間后n個月的YYYYMM
*@param inputDate
*@param n
*@return
*/
public static String getYearAndMonth(String dateStr, int n)
throws FrameException {
Date oneDay = TypeCast.stringToDate(dateStr, "", true);
Calendar ca = Calendar.getInstance();
ca.clear();
ca.setTime(oneDay);
ca.set(Calendar.MONTH, ca.get(Calendar.MONTH) + n);
int yyyy = ca.get(Calendar.YEAR);
if (yyyy < 1000 || yyyy > 9999)
throw new FrameException(
GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
"| 錯誤的年! |");
int MM = ca.get(Calendar.MONTH) + 1;
String month = "" + MM;
if (MM < 10)
month = "0" + MM;
return "" + yyyy + month;
}
/**
*根據所給的起始,終止時間來計算間隔月數
*@param startDate YYYYMM
*@param endDate YYYYMM
*@return 間隔月數
*/
public static int getIntervalMonth(String startDate, String endDate) {
int startYear = Integer.parseInt(startDate.substring(0, 4));
int startMonth = 0;
if (startDate.substring(4, 5).equals("0"))
startMonth = Integer.parseInt(startDate.substring(5));
startMonth = Integer.parseInt(startDate.substring(4, 6));
int endYear = Integer.parseInt(endDate.substring(0, 4));
int endMonth = 0;
if (endDate.substring(4, 5).equals("0"))
endMonth = Integer.parseInt(endDate.substring(5));
endMonth = Integer.parseInt(endDate.substring(4, 6));
int intervalMonth =
(endYear * 12 + endMonth) - (startYear * 12 + startMonth);
return intervalMonth;
}
/**
* 得到年月,yyyyMM格式
* @param dateStr
* @return
* @throws AppException
*/
public static String getYearAndMonth(String dateStr)
throws FrameException {
Date oneDay = TypeCast.stringToDate(dateStr, "", true);
Calendar ca = Calendar.getInstance();
ca.clear();
ca.setTime(oneDay);
int yyyy = ca.get(Calendar.YEAR);
if (yyyy < 1000 || yyyy > 9999)
throw new FrameException(
GlobalErrorCode.INPUTPARAMTYPEERRORCODE,
"| 錯誤的年! |");
int MM = ca.get(Calendar.MONTH) + 1;
String month = "" + MM;
if (MM < 10)
month = "0" + MM;
return "" + yyyy + month;
}
public static void main(String[] args) {
try {
System.out.println("aaaaaaaaaaaaaaaaaa");
//System.out.println(DateUtil.getYear("2003-01-21"));
System.out.println(DateUtil.getYearAndMonth("2003-01-01"));
System.out.println(
DateUtil.getYearAndMonth(
(new java.sql.Date(System.currentTimeMillis())).toString(),
-1));
} catch (Exception e) {
e.printStackTrace();
}
// java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
// System.out.println(format.format(getDate()));
// System.out.println(format.format(getDate(2000,2,29)));
//Date date = format.parse("1999/01/20");
//Date date = java.text.DateFormat.getDateInstance()
//System.out.println(format.format(date));
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -