package util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期操作功能类.
* <p/>
* 最后更新:2008-5-31
*
* @author mcl
*/
public class DateUtil {
/**
* 判断字符串是否是有效的日期,
* 格式"yyyy-MM-dd,yyyy-MM-d,yyyy-M-dd,yyyy-M-d
* "yyyy/MM/dd,yyyy/MM/d,yyyy/M/dd,yyyy/M/d"
* "yyyyMMdd"
*
* @param date 日期字符串
* @return 是则返回true,否则返回false
*/
public static boolean isValidDate(String date) {
if ((date == null) || (date.length() < 8)) {
return false;
}
try {
boolean result = false;
SimpleDateFormat formatter;
char dateSpace = date.charAt(4);
String format[];
if ((dateSpace == '-') || (dateSpace == '/')) {
format = new String[4];
String strDateSpace = Character.toString(dateSpace);
format[0] = "yyyy" + strDateSpace + "MM" + strDateSpace + "dd";
format[1] = "yyyy" + strDateSpace + "MM" + strDateSpace + "d";
format[2] = "yyyy" + strDateSpace + "M" + strDateSpace + "dd";
format[3] = "yyyy" + strDateSpace + "M" + strDateSpace + "d";
}
else {
format = new String[1];
format[0] = "yyyyMMdd";
}
for (int i = 0; i < format.length; i++) {
String aFormat = format[i];
formatter = new SimpleDateFormat(aFormat);
formatter.setLenient(false);
String tmp = formatter.format(formatter.parse(date));
if (date.equals(tmp)) {
result = true;
break;
}
}
return result;
}
catch (ParseException e) {
return false;
}
}
/**
* 判断字符串是否是有效的日期,格式"yyyy-MM-dd HH:mm:ss"
*
* @param date 日期字符串
* @return 是则返回true,否则返回false
*/
public static boolean isValidTime(String date) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setLenient(false);
formatter.parse(date);
return true;
}
catch (ParseException e) {
return false;
}
}
/**
* 转换字符串为日期,格式"yyyy-MM-dd"
*
* @param date 日期字符串,格式为"yyyy-MM-dd"
* @return 返回格式化的日期
*/
public static Date strToDate(String date) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.setLenient(false);
return formatter.parse(date);
}
/**
* 转换字符串为日期,格式"yyyy-MM-dd"
*
* @param date 日期字符串,格式为"yyyyMMdd"
* @return 返回格式化的日期
*/
public static Date strToFormateDate(String date) throws ParseException {
String str = date.substring(0,4)+"-"+date.substring(4,6)+"-"+date.substring(6,8);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.setLenient(false);
return formatter.parse(str);
}
public static void main(String args[]) throws ParseException{
strToFormateDate("20081219");
}
/**
* 转换字符串为日期,格式"yyyy-MM-dd HH:mm:ss"
*
* @param date 日期字符串
* @return 返回格式化的日期
*/
public static Date strToTime(String date) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setLenient(false);
return formatter.parse(date);
}
/**
* 转换日期为字符串,格式"yyyy-MM-dd"
*
* @param date 日期
* @return 返回格式化的日期字符串
*/
public static String dateToStr(Date date) {
if (date == null) return null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
return formatter.format(date);
}
/**
* 转换日期为字符串,格式"yyyyMMdd"
* @param date
* @return
*/
public static String dateToStrNoBlank(Date date) {
if (date == null) return null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
return formatter.format(date);
}
/**
* 转换日期为字符串,格式"yyyyMMdd"
* @param date
* @return
*/
public static String dateToSimpleStr(Date date) {
String str = "";
String simpleStr = "";
if (date == null) return null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
str = formatter.format(date);
simpleStr = str.substring(2,4)+str.substring(4,6)+str.substring(6,8);
return simpleStr;
}
/**
* 转换日期为字符串,格式"yyyy-MM-dd HH:mm:ss"
*
* @param date 日期
* @return 返回格式化的日期字符串
*/
public static String timeToStr(Date date) {
if (date == null) return null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.format(date);
}
/**
* 取得现在的日期,格式"yyyy-MM-dd HH:mm:ss"
*
* @return 返回格式化的日期字符串
*/
public static String getNow() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date Now = new Date();
return formatter.format(Now);
}
/**
* 取得现在的日期,格式"yyyy-MM-dd"
*
* @return 返回格式化的日期字符串
*/
public static String getDate() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date Now = new Date();
return formatter.format(Now);
}
/**
* 取得现在的时间,格式"HH:mm:ss"
*
* @return 返回格式化的时间字符串
*/
public static String getTime() {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date Now = new Date();
return formatter.format(Now);
}
/**
* 取得年份,格式"yyyy"
*
* @return 返回当前年份
*/
public static int getYear() {
Date Now = new Date();
return getYear(Now);
}
/**
* 取得当年年初日期,格式"yyyy-mm-dd"
* @return 返回当年年初日期
*/
public static String getBeginDate(){
String date = String.valueOf(getYear()) +"-" + "01" +"-" + "01";
return date;
}
/**
* 取得日期的年份,格式"yyyy"
*
* @param date 日期
* @return 日期的年份
*/
public static int getYear(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
return Integer.parseInt(formatter.format(date));
}
/**
* 取得月份
*
* @return 返回当前月份
*/
public static int getMonth() {
Date Now = new Date();
return getMonth(Now);
}
/**
* 取得日期的月份
*
* @param date 日期
* @return 日期的月份
*/
public static int getMonth(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("M");
return Integer.parseInt(formatter.format(date));
}
/**
* 取得今天的日期数
*
* @return 返回今天的日期数
*/
public static int getDay() {
Date Now = new Date();
return getDay(Now);
}
/**
* 取得日期的天数
*
* @param date 日期
* @return 日期的天数
*/
public static int getDay(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("d");
return Integer.parseInt(formatter.format(date));
}
/**
* 获得与某日期相隔几天的日期
*
* @param date 指定的日期
* @param addCount 相隔的天数
* @return 返回的日期
*/
public static Date addDay(Date date, int addCount) throws ParseException {
//Calendar cal = new GregorianCalendar();
//最好用Calendar.getInstance();
//因为有的地方,不是使用GregorianCalendar的。
Calendar calendar = Calendar.getInstance();
calendar.setTime(strToDate(dateToStr(date)));
calendar.add(Calendar.DATE, addCount);
return calendar.getTime();
}
/**
* 获得与某日期相隔几月的日期
*
* @param date 指定的日期
* @param addCount 相隔的月数
* @return 返回的日期
*/
public static Date addMonth(Date date, int addCount) throws ParseException {
Calendar calendar = Calendar.getInstance();
calendar.setTime(strToDate(dateToStr(date)));
calendar.add(Calendar.MONTH, addCount);
return calendar.getTime();
}
//**************************************************
//public static long getDistDay(Date earlier, Date later)
/*
public static long getDistDay()
{
Calendar calendar = Calendar.getInstance();
//calendar.setTime(strToDate(dateToStr(earlier)));
long i = calendar.getTimeInMillis();
System.out.println(calendar.getTime());
System.out.println(calendar.getTimeInMillis());
System.out.println(calendar.getTime());
System.out.println(calendar.getTimeInMillis());
return i;
}
public static void main(String[] args)
{
//System.out.println();
getDistDay();
}
*/
/**
* 将传入的日期转换为中文格式
* @param enDate 指定的日期,格式为2007-01-02
* @return 返回的符合中文格式的日期
*/
public static String enToCnDate(Date enDate){
String datestr = dateToStr(enDate);
String s=datestr.substring(0,4);
s = s + "年";
String s2=datestr.substring(5,7);
s2 = s2 + "月";
String s3 = datestr.substring(8, datestr.length());
s2 = s2 + s3 + "日";
String sFinal;
String [] a={"0","1","2","3","4","5","6","7","8","9"};
String [] b={"O","一","二","三","四","五","六","七","八","九"};
for(int i=0;i<a.length;i++){
for(int j=0;j<s.length()-1;j++){
if(s.substring(j,j+1).equals(a[i]))
s=s.substring(0,j)+b[i]+s.substring(j+1,s.length());
}
}
String [] c={"01","02","03","04","05","06","07","08","09","10",
"11","12","13","14","15","16","17","18","19","20",
"21","22","23","24","25","26","27","28","29","30","31"};
String [] d={"一","二","三","四","五","六","七","八","九","十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八",
"二十九","三十","三十一"};
for(int i=0;i<c.length;i++){
for(int j=0;j<s2.length()-2;j++){
if(s2.substring(j,j+2).equals(c[i]))
s2=s2.substring(0,j)+d[i]+s2.substring(j+2,s2.length());
}
}
sFinal = s + s2;
return sFinal;
}
}
DateUtil.java 通用时间处理类
最新推荐文章于 2022-02-25 18:19:43 发布