java.sql.Timestamp 格式化有点疑问!

BeiAn 2008-04-19 09:34:02
我想得到得到的结果:2008-03-20 13:30:00

Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

temp = Timestamp.valueOf(sdf.format(temp));//这个得出的结果还是:2008-03-20 13:30:00.0

temp = Timestamp.valueOf((temp.toString()).substring(0, 19));//这个得出的结果还是:2008-03-20 13:30:00.0

如果我再想得到的结果为:2008-03-20 13:30
也应该怎么处理呢?


觉得Timestamp 和 Date 就是有很大的差别!
...全文
2829 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ganymede 2011-03-25
  • 打赏
  • 举报
回复
另外补充一下,楼主想要将格式化好了的字符串再转化为Timestamp再回传给数据库吧?我个人认为如果你格式化的字符串不符合yyyy-mm-dd hh:mm:ss[.f...] 这个要求,那么该字符串是不能被转化为Timestamp 的。同理要想将该字符串转换为Date 那么精度只能到日,小时以后都没有。所以要是非要改时间格式,还是在sql改吧。
Ganymede 2011-03-25
  • 打赏
  • 举报
回复
楼主说的现象主要是由于valueOf()就是将里面的字符串,转换为Timestamp 类型,而valueOf里面的字符串是有严格的格式定义的(格式为yyyy-mm-dd hh:mm:ss[.f...] 格式的时间戳。可以省略小数秒),而你的SimpleDateFormat 将格式定义为yyyy-MM-dd HH:mm:ss符合要求,所以输出的结果就自动按照Timestamp 所要求的格式输出了 就是楼主说的2008-03-20 13:30:00.0
个人感觉要是将时间戳的时间进行格式化,最好将其转换为Date或者Calendar类型。Timestamp 的精度要高一些,防止数据库数据脏读现象
Ganymede 2011-03-25
  • 打赏
  • 举报
回复
以下代码输出结果为2008-03-20 13:30
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class TimeTest
{
public static void main(String[] args)
{
String s = "2008-03-20 13:30:00.0";
Timestamp ts = Timestamp.valueOf(s);
Calendar c = Calendar.getInstance();
c.setTime(ts);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
System.out.println(sdf.format(c.getTime()));
}
}
licip 2011-03-25
  • 打赏
  • 举报
回复
Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得
这个应该是数据库取出来的吧。不是string吧。
[Quote=引用 1 楼 chenqiyuan520 的回复:]
Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String st=sdf.format(temp);//这个得出的结果还是:2008-03-20 ……
[/Quote]
clovew521 2011-03-25
  • 打赏
  • 举报
回复
to_date('','格式')
clovew521 2011-03-25
  • 打赏
  • 举报
回复
基本差不多,都是时间格式呗,你可以从sql中动动手脚直接得到你想要的格式。
doer_ljy 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenqiyuan520 的回复:]

Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String st=sdf.format(temp);//这个得出的结果还是:2008-03-20……
[/Quote]
Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得
上面这句不会报错?
没听说过这种隐式转换啊。
aaronshai 2008-04-19
  • 打赏
  • 举报
回复
Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String st=sdf.format(temp);//这个得出的结果还是:2008-03-20 13:30:00

这个格式化后应该得到了2008-03-20 13:30:00

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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