java兑现日期与字符串互相转化

java实现日期与字符串互相转化

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

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

   已经在http://blog.csdn.net/wangbaoyin/article/details/7750354里面有详细的说明了!

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

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

java.lang.Object
  java兑现日期与字符串互相转化java.util.Date
      java兑现日期与字符串互相转化java.sql.Date

java.lang.Object
  java兑现日期与字符串互相转化java.text.Format
      java兑现日期与字符串互相转化java.text.DateFormat
          java兑现日期与字符串互相转化java.text.SimpleDateFormat
然后我们就写一个类来测试一下:

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  = new java.sql.Date(utilDate.getTime());

1楼sherw123前天 15:35
很好。。。
Re: wangbaoyin前天 15:42
回复sherw123n呵呵,谢谢