今天周五,闲着也没什么事做,就想总结一下以前遇到的一些小问题,也算是强化一下编码能力和基础知识掌握程度吧!在我们开发的过程中,时常会遇到一些日期的处理,这是怎么也避免不了的,对于这些问题,对于一个新手来说还真是一个棘手的问题,因为当初我就为它愁过。当然,对于已经上班工作的程序员来说,解决这样的问题应当是随手拈来,不能被这样的小问题困扰了。再说,对于日期的转换我们可以采取两种处理方法:

1.在sql语句中使用转换函数解决(Oracle数据库)。

2.用java代码转换完成后存入数据库。

今天我们就主要谈一谈第二种方法,在真正上手之前我们先熟悉一下Date这个类和DateFormat类。


然后我们就写一个类来测试一下:
package example;
import java.util.*;
import java.text.*;
public class dateTest{
// 日期格式,年份,例如:2004,2008
public static final String DATE_FORMAT_YYYY = "yyyy";
// 日期格式,年份和月份,例如:200707,200808
public static final String DATE_FORMAT_YYYYMM = "yyyyMM";
// 日期格式,年月日,例如:20050630,20080808
public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd";
// 日期格式,年月日,用横杠分开,例如:2006-12-25,2008-08-08
public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";
// 日期格式,年月日时分秒,例如:20001230120000,20080808200808
public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISS = "yyyyMMddHHmmss";
// 日期格式,年月日时分秒,年月日用横杠分开,时分秒用冒号分开,
// 例如:2005-05-10 23:20:00,2008-08-08 20:08:08
public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";
/**
* 字符串转换为日期
*
* @author wangbaoyin
* @param String strDate:日期的字符串形式
* @param String format:转换格式
* @return String
* @throws
*/
public static Date strToDate(String strDate, String format) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
Date date = null;
try {
date = dateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 字符串转换为日期时间
*
* @author wangbaoyin
* @param String strDateTime:日期时间的字符串形式
* @param String format:转换格式
* @return String
* @throws
*/
public static Date strToDateTime(String strDateTime, String fromat) {
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(fromat);
Date dateTime = null;
try {
dateTime = dateTimeFormat.parse(strDateTime);
} catch (ParseException e) {
e.printStackTrace();
}
return dateTime;
}
/**
* 日期转换为字符串
*
* @author wangbaoyin
* @param Date date:需要转换的日期
* @param String format:转换格式
* @return String
* @throws
*/
public static String dateToStr(Date date, String format) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}
/**
* 日期时间转换为字符串
*
* @author wangbaoyin
* @param Date date:需要转换的日期
* @param String format:转换格式
* @return String
* @throws
*/
public static String dateTimeToStr(Date date, String format) {
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(format);
return dateTimeFormat.format(date);
}
/**
* 得到当天的最后时间,today是字符串类型"yyyy-mm-dd", 返回是日期类型"yyyy-mm-dd 23:59:59"
*
* @author wangbaoyin
* @param String today
* @return Date
* @throws
*/
public static Date getTodayLastTime(String today) {
String todayLastTime = today + " 23:59:59";
return strToDateTime(todayLastTime, DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
}
// 主函数测试
public static void main(String[] args) throws Exception {
// 日期转换字符串测试
Date date = new Date();
String dateStr = "";
// 获得DateFormat对象
DateFormat df = DateFormat.getDateInstance();
// 把日期转换成为字符串格式为yyyy-mm-dd
String s = df.format(date);
// 根据给定的正则表达式的匹配来拆分此字符串
String ss[] = s.split("-");
for (int i = 0; i < ss.length; i++) {
dateStr = dateStr + ss[i];
}
dateStr = dateStr + String.valueOf(date.getHours()) + String.valueOf(date.getMinutes()) + String.valueOf(date.getSeconds());
System.out.println("日期转换字符串1:" + dateStr);
String dateStr2 = dateTimeToStr(date, DATE_TIME_FORMAT_YYYYMMDDHHMISS);
System.out.println("日期转换字符串2:" + dateStr2);
// /字符串转换日期测试
String str = "20120817";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_YYYYMMDD);
Date strDate = sdf.parse(str);
System.out.println("字符串转换日期1:" + strDate);
Date strDate2 = strToDateTime(str, DATE_FORMAT_YYYYMMDD);
System.out.println("字符串转换日期2:" + strDate2);
}
}
一定要注意的是,你的字符串必须是一个可以解析的,否则就会出现异常!
不知你注意到没有Date有java.util.Date和java.sql.Date两种,在我们的类中的date全是util这种,下面说一下怎么把java.util.Date类型的Date转换为java.sql.Date类型的!
java.util.Date utilDate  = new java.util.Date();
java.sql.Date sqlDate  = newjava.sql.Date(utilDate.getTime());