java.sql.Date、java.sql.Time、java.sql.TimeStamp真的有区别吗?
java.sql.Date、java.sql.Time、java.sql.TimeStamp到底啥区别?我们一起打破砂锅问到底:
网上很多说java.sql.Date只记录日期、java.sql.Time只记录时分秒、java.sql.TimeStamp记录年月日时分秒纳秒。
为什么下面的代码(1)、(2)、(3)、(4)获取完时间,年月日时分秒纳秒等等都能取出来?
public static void main(String[] args) { //(1) java.util.Date time1 = new java.util.Date(); //(2) java.sql.Date time2 = new java.sql.Date(System.currentTimeMillis()); //(3) java.sql.Time time3 = new java.sql.Time(System.currentTimeMillis()); //(4) java.sql.Timestamp time = new java.sql.Timestamp(System.currentTimeMillis()); System.out.println(time); DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss 今年第ww周 第DD天"); System.out.println("北京时间:" + sdf.format(time1) + "\n"); System.out.println("北京时间:" + sdf.format(time2)+ "\n"); System.out.println("北京时间:" + sdf.format(time3)+ "\n"); System.out.println("北京时间:" + sdf.format(time)+ "\n"); }
我今天捣鼓了一下,发现java.sql.Date和java.sql.Time,都是继承java.util.Date。 而new一个java.util.Date() 实际上都是取System.currentTimeMillis()。
网上说的不是很准确,java.sql.Date和java.sql.Time只是他们的toString()方法的格式控制不一样,而println(obj)恰恰就是调用的obj的toString()方法,
网上说的不是很准确,java.sql.Date和java.sql.Time只是他们的toString()方法的格式控制不一样,而println(obj)恰恰就是调用的obj的toString()方法,
所以说输出的日期格式会有 “java.sql.Date只记录日期、java.sql.Time只记录时分秒、java.sql.TimeStamp记录年月日时分秒纳秒”谬论。
sdf.format(time),用的是java.util.Date的 fastTime,fastTime也就是System.currentTimeMillis()取得的值, 所以 sdf.format(time) 打印出来是一模一样的。
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!