java实现日期与字符串互相转化
今天周五,闲着也没什么事做,就想总结一下以前遇到的一些小问题,也算是强化一下编码能力和基础知识掌握程度吧!在我们开发的过程中,时常会遇到一些日期的处理,这是怎么也避免不了的,对于这些问题,对于一个新手来说还真是一个棘手的问题,因为当初我就为它愁过。当然,对于已经上班工作的程序员来说,解决这样的问题应当是随手拈来,不能被这样的小问题困扰了。再说,对于日期的转换我们可以采取两种处理方法:
1.在sql语句中使用转换函数解决(Oracle数据库)。
已经在http://blog.csdn.net/wangbaoyin/article/details/7750354里面有详细的说明了!
2.用java代码转换完成后存入数据库。
今天我们就主要谈一谈第二种方法,在真正上手之前我们先熟悉一下Date这个类和DateFormat类。
java.lang.Object
java.util.Date
java.sql.Date
java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
然后我们就写一个类来测试一下:package example;import java.util.*;import java.text.*;public class dateTest{// 日期格式,年份,例如:2004,2008public static final String DATE_FORMAT_YYYY = "yyyy";// 日期格式,年份和月份,例如:200707,200808public static final String DATE_FORMAT_YYYYMM = "yyyyMM";// 日期格式,年月日,例如:20050630,20080808public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd";// 日期格式,年月日,用横杠分开,例如:2006-12-25,2008-08-08public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";// 日期格式,年月日时分秒,例如:20001230120000,20080808200808public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISS = "yyyyMMddHHmmss";// 日期格式,年月日时分秒,年月日用横杠分开,时分秒用冒号分开,// 例如:2005-05-10 23:20:00,2008-08-08 20:08:08public 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-ddString 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 = new java.sql.Date(utilDate.getTime());
- 1楼sherw123前天 15:35
- 很好。。。
- Re: wangbaoyin前天 15:42
- 回复sherw123n呵呵,谢谢