取出数据以后怎么得到小时:分钟:秒?

wxjyf2007 2008-06-22 12:48:30
在oracle中,数据是以dattime 年 月 日 小时 分钟 秒 存储的,用hib取出数据以后,debug可以看到object中还是有小时 分钟 秒的,但转为string以后,就似乎自动忽略掉了。请问怎么保持他的格式?



public MessageGameInfoVo getInfoVo(List list){

InfoVo vo = new MessageGameInfoVo();
for(Iterator it = list.iterator();it.hasNext();){
Object[] objTmp;
objTmp=(Object[])it.next();
System.out.println(objTmp.length);
for(int i = 0 ; i< objTmp.length; i++){
if(i == 3){
System.out.println(objTmp[i]); //没有小时
vo.setMessageDate(date.toLocaleString()); //没有小时
System.out.println(date.toLocaleString()); //没有小时
}else
System.out.println(objTmp[i]);

}
}

return vo;
}

...全文
230 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
interpb 2008-06-22
  • 打赏
  • 举报
回复
用SimpleDateFormate 格式化一下吧
睿音 2008-06-22
  • 打赏
  • 举报
回复
@Temporal(TemporalType.TIMESTAMP)
private java.lang.Date dateTime;

实体中你可以使用Date,但是数据库中一定要使用TimeStamp。
wxjyf2007 2008-06-22
  • 打赏
  • 举报
回复
12:52:06,453 INFO [STDOUT] LIVE04
12:52:06,453 INFO [STDOUT] 4
12:52:06,453 INFO [STDOUT] 3
12:52:13,296 ERROR [STDERR] java.text.ParseException: Unparseable date: "2008-06-18"

换数据库字段是暂时不行的,在观有无大侠出现再说
胡矣 2008-06-22
  • 打赏
  • 举报
回复
直接格式化不行吗?
按KOOK_OKKO 说的试试
whetu 2008-06-22
  • 打赏
  • 举报
回复
那这样试试:
Date date1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(objTmp[i].toString);
这需要你捕获异常
KOOK_OKKO 2008-06-22
  • 打赏
  • 举报
回复


若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,
即需要年月日时分秒的,选择java.sql.Timestamp类型

考虑把数据库改成java.sql.Timestamp吧
wxjyf2007 2008-06-22
  • 打赏
  • 举报
回复
如 KOOK_OKKO 所说清零,那date就不能用了,该用什么可以保证小时 分钟不被清零??
wxjyf2007 2008-06-22
  • 打赏
  • 举报
回复
whetu,代码是正确的,问题是hib从数据库中取出来的1213722000000的GMT时间,这里有包含小时 分钟吗?如果有转换为date了会不会被丢弃掉呢??我感觉Date date = (Date)objTmp[i];中objTmp[i]根本没有包含小时哦......怎么把GMT时间转成带有小时 分钟的时间???
KOOK_OKKO 2008-06-22
  • 打赏
  • 举报
回复
java.sql.Date是为了配合SQL DATE而设置的数据类型。
“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。
whetu 2008-06-22
  • 打赏
  • 举报
回复
如下:
Date today = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today_str = "";
today_str = sdf.format(today); //带时分秒的时间

HH是24小时制,如果换为 hh则是12小时制



wxjyf2007 2008-06-22
  • 打赏
  • 举报
回复
格式了还不行啊


Date date = (Date)objTmp[i];
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String c=sdf.format(date);
System.out.println("objTmp[3]:" + c);
System.out.println("objTmp[3]:" + objTmp[i].toString());
vo.setMessageDate(date.toLocaleString());
System.out.println(("objTmp[3]:" + date.toGMTString());



另外在调试中看到的obj为:
1213722000000

控制台打印结果:
12:16:17,890 INFO [STDOUT] objTmp[3]:2008-06-18 00:00:00
12:16:19,671 INFO [STDOUT] objTmp[3]:2008-06-18
12:16:19,671 INFO [STDOUT] objTmp[3]:17 Jun 2008 17:00:00 GMT

数据库中:
2008-6-18 20:36:13

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧