java.sql.date按照年月日时分秒转化为啥会有不是00:00:00的时分秒

w1215660471 2014-04-16 10:51:25
java.sql.Date date=new java.sql.Date(new Date().getTime());
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sf.format(date));
图片如下 :
...全文
770 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
代号:X 2014-12-05
  • 打赏
  • 举报
回复
hh:mm:ss 12小时制 HH:mm:ss 24小时制
w1215660471 2014-04-22
  • 打赏
  • 举报
回复
引用 13 楼 levelmini 的回复:
[quote=引用 12 楼 w1215660471 的回复:] 是哈,但是我只设置年月日,但为啥有时分秒,而且还不是固定的,你跟我说说呗
年月日是yyyy-MM-dd,你给的代码里面是hh:mm:ss,是时分秒[/quote] 问题是我没给它设值,它也有东西哈
levelnini 2014-04-22
  • 打赏
  • 举报
回复
引用 12 楼 w1215660471 的回复:
是哈,但是我只设置年月日,但为啥有时分秒,而且还不是固定的,你跟我说说呗
年月日是yyyy-MM-dd,你给的代码里面是hh:mm:ss,是时分秒
w1215660471 2014-04-22
  • 打赏
  • 举报
回复
引用 11 楼 levelmini 的回复:
[quote=引用 10 楼 w1215660471 的回复:] 那也是00:00:00,为啥是12:00:00,或者是其他时间?
你的SimpleDateFormat如何格式化,那你的sf.format(date)就如何显示咯[/quote]
引用 11 楼 levelmini 的回复:
[quote=引用 10 楼 w1215660471 的回复:]那也是00:00:00,为啥是12:00:00,或者是其他时间?
你的SimpleDateFormat如何格式化,那你的sf.format(date)就如何显示咯[/quote] 是哈,但是我只设置年月日,但为啥有时分秒,而且还不是固定的,你跟我说说呗
levelnini 2014-04-22
  • 打赏
  • 举报
回复
引用 14 楼 w1215660471 的回复:
问题是我没给它设值,它也有东西哈

你问这个问题我就只能说你懒了。你去查API
levelnini 2014-04-20
  • 打赏
  • 举报
回复
引用 10 楼 w1215660471 的回复:
那也是00:00:00,为啥是12:00:00,或者是其他时间?
你的SimpleDateFormat如何格式化,那你的sf.format(date)就如何显示咯
w1215660471 2014-04-16
  • 打赏
  • 举报
回复
还有一个更奇怪我只设置sql.date的年月日format出来竟然有时分秒而且是12:00:00
java.sql.Date date=java.sql.Date.valueOf("1990-10-16");
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("sqlDate:\t"+date);
System.out.println("formate的时间:\t"+sf.format(date));
图片为:
w1215660471 2014-04-16
  • 打赏
  • 举报
回复
问题是sql.date不是没有十分秒的吗?#5根本就无效,你看下代码为:
java.sql.Date date =new java.sql.Date(0);
date.setYear(1990);
date.setMonth(10);
date.setDate(16);
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("sqlDate:\t"+date);
System.out.println("formate的时间:\t"+sf.format(date));
截图为
S117 2014-04-16
  • 打赏
  • 举报
回复
你构造函数中指定的时间本来有就带时分秒的,所以输出就不是00:00:00了 如果想得到那种效果可以调用相应的set方法
levelnini 2014-04-16
  • 打赏
  • 举报
回复
按照你的代码来做的话这个显示结果是正常的。因为SimpleDateFormat这个类是用来格式化时间的,你给的格式就是那样的显示时间。如果只想要时间不想要日期的话直接这么写就可以啦~

SimpleDateFormat sf=new SimpleDateFormat("hh:mm:ss");
程序员小亮 2014-04-16
  • 打赏
  • 举报
回复
你获取的是当前时间,所以肯定有时分秒,不会变成00:00:00的,可以用#1的方法
tony4geek 2014-04-16
  • 打赏
  • 举报
回复
什么意思? java.util .date的试试看
Fate- 2014-04-16
  • 打赏
  • 举报
回复
java.sql.Date date=new java.sql.Date(new Date().getTime()); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd); System.out.println(sf.format(date)+“ 00:00:00”); 这样子不就可以啦
w1215660471 2014-04-16
  • 打赏
  • 举报
回复
引用 8 楼 levelmini 的回复:
[quote=引用 7 楼 w1215660471 的回复:] 还有一个更奇怪我只设置sql.date的年月日format出来竟然有时分秒而且是12:00:00 java.sql.Date date=java.sql.Date.valueOf("1990-10-16"); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println("sqlDate:\t"+date); System.out.println("formate的时间:\t"+sf.format(date)); 图片为:
经过我的测试,如果要显示2014-04-16这个日期的话,代码如下
		java.sql.Date date =new java.sql.Date(0);
		date.setYear(114);
		date.setMonth(3);
		date.setDate(16);
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("sqlDate:\t"+date);
		System.out.println("formate的时间:\t"+sf.format(date));
这里注意一下,setYear是在1900的基础上再加那么多,所以要设置成2014参数是114,而setMonth是在1的基础上加,所以要4月的话参数是3,而date的话,是在0的基础上加,所以是哪天就是哪天了,如果你要显示前一天的话,如
date.setYear(0);
		date.setMonth(0);
		date.setDate(0);
这个代码的结果就是1899-12-31 另外,你显示时分秒是因为你的SimpleDateFormat 就这么格式化的。[/quote] 那也是00:00:00,为啥是12:00:00,或者是其他时间?
w1215660471 2014-04-16
  • 打赏
  • 举报
回复
引用
#8
那也是00:00:00的啊,怎么会是12:00:00
levelnini 2014-04-16
  • 打赏
  • 举报
回复
引用 7 楼 w1215660471 的回复:
还有一个更奇怪我只设置sql.date的年月日format出来竟然有时分秒而且是12:00:00 java.sql.Date date=java.sql.Date.valueOf("1990-10-16"); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println("sqlDate:\t"+date); System.out.println("formate的时间:\t"+sf.format(date)); 图片为:
经过我的测试,如果要显示2014-04-16这个日期的话,代码如下
		java.sql.Date date =new java.sql.Date(0);
		date.setYear(114);
		date.setMonth(3);
		date.setDate(16);
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("sqlDate:\t"+date);
		System.out.println("formate的时间:\t"+sf.format(date));
这里注意一下,setYear是在1900的基础上再加那么多,所以要设置成2014参数是114,而setMonth是在1的基础上加,所以要4月的话参数是3,而date的话,是在0的基础上加,所以是哪天就是哪天了,如果你要显示前一天的话,如
date.setYear(0);
		date.setMonth(0);
		date.setDate(0);
这个代码的结果就是1899-12-31 另外,你显示时分秒是因为你的SimpleDateFormat 就这么格式化的。

62,615

社区成员

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

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