Java String 转成 Mysql Date

问答首页→Java编程和Java企业应用→Hibernate

关于String类型转换成Date,再转换成String类型的问题!

悬赏:5发布时间:2009-03-19提问人:幽灵线程(初级程序员)

<>猎头职位:上海:上海:天会皓闻诚聘资深Java架构师

我最近一周在做一个练习项目,

用的是自己写的Struts1和Hibernate3框架。

有一个存储Date型数据很麻烦,不能解决。

如下:

1.给前台一个Date类型数据date赋值,格式为:2009-1-1

2.给struts的form对象赋值,类型为Date,格式为:非2009-1-1

3,给form对应的持久化对象po赋值,格式为:格式为:非2009-1-1

4.在hibernate构造sql语句时,需要格式为:2009-1-1的String数据类型,这里却得不到了。(关键是这里)

(我的sql语句为insertintotablenamevalues(to_date('2009-1-1','yyyy-mm-dd')))

问题概括:将格式为2009-1-1的String,转成Date,再转成String:"2009-1-1"。

多问一句,各位朋友的存储日期用什么手段!

该问题已经关闭:超过15天由系统自动关闭,悬赏平分给所有参与回答的会员

问题答案可能在这里→寻找更多解答

*Java获取各种常用时间方法

*Calendar常用方法封装

*分享一个关于日期常用操作工具类

*DateField存储格式的问题?

*java求某个月中星期天的个数算法

回答

insertintotablenamevalues(to_date('2009-1-1','yyyy-m-d')))

airu(初级程序员)2009-03-19

存储日期就用java.util.Date你hbm.xml里面配置他的类型为java.util.Date,

你从页面提交过来的时间,struts会自动帮你生成指定的Date对象赋值的

你尽然用到了Hibernate就不用关心他的Sql语句了.

比如你的类是这样的

Java代码收藏代码

1.publicclassStudent{

2.privateDatedate;//java.util.Date类型的

3.//setter..getter...

4.}

publicclassStudent{

privateDatedate;//java.util.Date类型的

//setter..getter...

}

然后在你Student.hbm.xml配置文件里面你配置这个字段的类型为java.util.Date就可,或者不用配置他的类型就一个<propertyname="date"/>他也会自动配置的.

然后你要保存页面提交过来的日期数据的时候(就是你要执行那条保存语句的时候)

你只要如下就可以了

Java代码收藏代码

1.//假如下面的方法可以正确获得Hierbante的Session

2.publicvoidtest(){

3.Studentt=newStudent();

4.t.setDate(newDate);//加入这个的日期是从页面获得过来的,你可以通过form.getDate()来设置.

5.//然后你直接保存就可以了,hibnerate会自动帮你生成语句并且执行保存数据的

6.session.save(t);//注意要提交事务才能真正的执行

7.}

//假如下面的方法可以正确获得Hierbante的Session

publicvoidtest(){

Studentt=newStudent();

t.setDate(newDate);//加入这个的日期是从页面获得过来的,你可以通过form.getDate()来设置.

//然后你直接保存就可以了,hibnerate会自动帮你生成语句并且执行保存数据的

session.save(t);//注意要提交事务才能真正的执行

}

yourgame(CTO)2009-03-20

发给你一个我自己写的

importjava.text.DateFormat;

importjava.text.ParseException;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.List;

importjava.util.Locale;

/**

*@authorLeonelWong

*@version1.0.0

*@create2008-07-2410:10

*@see处理时间(包括时间格式的类)

*/

publicclassDateUtils{

/**

*取时间年的格式代码

*/

publicstaticStringYEAR="yyyy";

/**

*取时间月的格式代码

*/

publicstaticStringMONTH="MM";

/**

*取时间日的格式代码

*/

publicstaticStringDAY="dd";

/**

*取时间时的格式代码

*/

publicstaticStringHOUR="hh";

/**

*取时间24小时制的格式代码

*/

publicstaticStringHOUR_24="HH";

/**

*取时间分的格式代码

*/

publicstaticStringMIMUTE="mm";

/**

*取时间秒的格式代码

*/

publicstaticStringSECOND="ss";

/**

*取时间毫秒的格式代码

*/

publicstaticStringMILLISECOND="SS";

/**

*格式为yyyy-MM-dd的时间

*/

publicstaticStringYMD_FORMAT=YEAR+"-"+MONTH+"-"+DAY;

/**

*格式为yyyy-MM-ddHH:mm:ss的时间

*/

publicstaticStringYMDHMS_FORMAT=YEAR+"-"+MONTH+"-"+DAY+""

+HOUR_24+":"+MIMUTE+":"+SECOND;

/**

*格式为yyyy-MM-ddHH:mm:ss:SS的时间

*/

publicstaticStringUTILTIME_FORMAT=YEAR+"-"+MONTH+"-"+DAY+""

+HOUR_24+":"+MIMUTE+":"+SECOND+":"+MILLISECOND;

/**

*格式为yyyyMMddHHmmssSS的时间

*/

publicstaticStringCRITERIONTIME_FORMAT=YEAR+MONTH+DAY+HOUR_24

+MIMUTE+SECOND+MILLISECOND;

/**

*@author王磊

*@see2008-03-08获得yy-mm-dd格式的时间

*@returnStringdate

*/

publicstaticStringgetYearMonthDay(){

returngetDateByFormat(YEAR+"-"+MONTH+"-"+DAY);

}

/**

*@see返回格式为yyyy-MM-ddHH:mm:ss:SS的时间字符串

*@returnStringdate

*/

publicstaticStringgetNOWTime_0(){

returngetDateByFormat(UTILTIME_FORMAT);

}

/**

*@see返回格式为yyyyMMddHHmmssSS的时间字符串

*@returnStringdate

*/

publicstaticStringgetNOWTime_1(){

returngetDateByFormat(CRITERIONTIME_FORMAT);

}

/**

*@see获得指定时间格式

*@paramString

*format时间格式

*@returnStringdateStr返回获得相应格式时间的字符串

*/

publicstaticStringgetDateByFormat(Stringformat){

StringdateStr="";

try{

if(format!=null){

Datedate=newDate(System.currentTimeMillis());

SimpleDateFormatsimFormat=newSimpleDateFormat(format,

Locale.CHINA);

dateStr=simFormat.format(date);

}

}catch(Exceptione){

e.printStackTrace();

}

returndateStr;

}

/**

*@see获得指定时间格式

*@paramDate

*date时间

*@paramString

*format时间格式

*@returnStringdateStr返回获得相应格式时间的字符串

*/

publicstaticStringgetDateByFormatYMD(Datedate){

StringdateStr="";

try{

SimpleDateFormatsimFormat=newSimpleDateFormat(YMD_FORMAT,

Locale.CHINA);

dateStr=simFormat.format(date);

}catch(Exceptione){

e.printStackTrace();

}

returndateStr;

}

/**

*@see获得指定时间格式

*@paramDate

*date时间

*@paramString

*format时间格式

*@returnStringdateStr返回获得相应格式时间的字符串

*/

publicstaticStringgetDateByFormat(Datedate,Stringformat){

StringdateStr="";

try{

if(format!=null){

SimpleDateFormatsimFormat=newSimpleDateFormat(format,

Locale.CHINA);

dateStr=simFormat.format(date);

}

}catch(Exceptione){

e.printStackTrace();

}

returndateStr;

}

/**

*@see获得当前时间

*@returnDatedate

*/

publicstaticDategetNOWTime(){

returnnewDate(System.currentTimeMillis());

}

/**

*@see把字符串类型的时间转换为yyyy-MM-dd的时间格式

*/

publicstaticDategetDateByStrToYMD(Stringstr){

Datedate=null;

if(str!=null&&str.trim().length()>0){

DateFormatdFormat=newSimpleDateFormat(YMD_FORMAT);

try{

date=dFormat.parse(str);

}catch(ParseExceptione){

e.printStackTrace();

}

}

returndate;

}

/**

*@see把字符串类型的时间转换为自定义格式的时间

*/

publicstaticDategetDateByStrToFormat(Stringformat,Stringstr){

DateFormatdFormat=newSimpleDateFormat(format);

Datedate=null;

try{

if(str!=null){

date=dFormat.parse(str);

}

}catch(ParseExceptione){

e.printStackTrace();

}

returndate;

}

/**

*功能:判断输入年份是否为闰年<br>

*

*@paramyear

*@return是:true否:false

*@authorpure

*/

publicstaticbooleanleapYear(intyear){

booleanleap;

if(year%4==0){

if(year%100==0){

if(year%400==0){

leap=true;

}else{

leap=false;

}

}else{

leap=true;

}

}else

leap=false;

returnleap;

}

/**

*功能:得到指定月份的月底格式为:xxxx-yy-zz(eg:2007-12-31)<br>

*

*@paramString

*@returnString

*/

publicstaticStringgetEndOfMonth(Stringstr){

inttyear=Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),

YEAR));

inttmonth=Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),

MONTH));

Stringstrtmonth=null;

StringstrZ=null;

if(tmonth==1||tmonth==3||tmonth==5||tmonth==7

||tmonth==8||tmonth==10||tmonth==12){

strZ="31";

}

if(tmonth==4||tmonth==6||tmonth==9||tmonth==11){

strZ="30";

}

if(tmonth==2){

if(leapYear(tyear)){

strZ="29";

}else{

strZ="28";

}

}

strtmonth=tmonth>=10?String.valueOf(tmonth):("0"+tmonth);

returntyear+"-"+strtmonth+"-"+strZ;

}

publicstaticStringgetEndOfMonth(inttyear,inttmonth){

Stringstrtmonth=null;

StringstrZ=null;

if(tmonth==1||tmonth==3||tmonth==5||tmonth==7

||tmonth==8||tmonth==10||tmonth==12){

strZ="31";

}

if(tmonth==4||tmonth==6||tmonth==9||tmonth==11){

strZ="30";

}

if(tmonth==2){

if(leapYear(tyear)){

strZ="29";

}else{

strZ="28";

}

}

strtmonth=tmonth>=10?String.valueOf(tmonth):("0"+tmonth);

returntyear+"-"+strtmonth+"-"+strZ;

}

/**

*功能:得到指定月份的月初格式为:xxxx-yy-zz(eg:2007-12-01)<br>

*

*@paramString

*@returnString

*/

publicstaticStringgetStartOfMonth(inttyear,inttmonth){

Stringstrtmonth=tmonth>=10?String.valueOf(tmonth)

:("0"+tmonth);

returntyear+"-"+strtmonth+"-"+"01";

}

publicstaticStringgetStartOfMonth(Stringstr){

inttyear=Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),

YEAR));

inttmonth=Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),

MONTH));

Stringstrtmonth=tmonth>=10?String.valueOf(tmonth)

:("0"+tmonth);

returntyear+"-"+strtmonth+"-"+"01";

}

/**

*功能:得到指定月份的月初格式为:xxxx-yy-zz(eg:2007-12-01)<br>

*

*@paramString

*@returnString

*/

publicstaticintgetMonthCountBySQU(Stringstart,Stringend){

intsyear=Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),

YEAR));

intsmonth=Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),

MONTH));

inteyear=Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),

YEAR));

intemonth=Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),

MONTH));

return(eyear-syear)*12+(emonth-smonth)+1;

}

/**

*获得时间序列EG:2008-01-01~2008-01-31,2008-02-01~2008-02-29

*/

publicstaticListgetMonthSqu(StringfromDate,StringtoDate){

Listlist=newArrayList();

intcount=getMonthCountBySQU(fromDate,toDate);

intsyear=Integer.parseInt(getDateByFormat(

getDateByStrToYMD(fromDate),YEAR));

intsmonth=Integer.parseInt(getDateByFormat(

getDateByStrToYMD(fromDate),MONTH));

inteyear=Integer.parseInt(getDateByFormat(getDateByStrToYMD(toDate),

YEAR));

StringstartDate=fromDate;

StringendDate="";

for(inti=1;i<=count;i++){

if(syear<=eyear){

startDate=getStartOfMonth(syear,smonth);

endDate=getEndOfMonth(syear,smonth);

list.add(startDate+"~"+endDate);

System.out.println(startDate+"~"+endDate);

if(smonth==13){

smonth=1;

syear++;

}

smonth++;

}

}

returnlist;

}

/**

*通过传入的时间来获得所属周内的时间

*@paramstart

*@paramnum

*@return

*/

publicstaticStringgetDateOFWeekByDate(Stringstart,intnum){

Datedd=getDateByStrToYMD(start);

Calendarc=Calendar.getInstance();

c.setTime(dd);

if(num==1)//返回星期一所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);

elseif(num==2)//返回星期二所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.TUESDAY);

elseif(num==3)//返回星期三所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);

elseif(num==4)//返回星期四所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY);

elseif(num==5)//返回星期五所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);

elseif(num==6)//返回星期六所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);

elseif(num==0)//返回星期日所在的日期

c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);

returngetDateByFormatYMD(c.getTime());

}

}

相关推荐