java 时间字符串 转换_java实现日期与字符串互相转化 | 学步园

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

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());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值