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