当前位置: 首页 > article >正文

Java中获取时间以及java.util和java.sql之间时间日期的转换

目录

一、获取时间和日期

通过java.util从系统获取当前时间

通过java.sql类型数据获取时间

将字符串转换成java.util.Date类型数据

将毫秒数转换成java.util.Date类型数据

二、数据库中存储日期的三种数据类型

三、数据库中三种数据对应Java中获取数据的存储结果

数据库数据类型为date

数据库数据类型为datatime

数据库数据类型为timestamp

四、java.util和java.sql之间时间日期的转换

通过getTime()方法将util.date转换成sql.date

通过getTime()方法将sql.date转换成util.date


一、获取时间和日期

通过java.util从系统获取当前时间

import java.util.Date;
import java.text.SimpleDateFormat;public class time {public static void main(String[] args) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.println(  df.format(new Date())  );}
}//输出:2019-01-07 10:51:35
//df.format(new Date())返回的是一个格式化时间的字符串

获取当前时间,以字符串返回。由返回值可以看到 java.util.Date 获取的是完整的时间包括日期和时间

通过java.sql类型数据获取时间

java.sql.Date ctime = new java.sql.Date(new java.util.Date().getTime());
System.out.println(df.format( ctime ));java.sql.Timestamp ctime2 = new java.sql.Timestamp(new java.util.Date().getTime());
System.out.println(df.format( ctime2 ));//输出
//2019-01-07 10:59:28
//2019-01-07 10:59:28

通过输出的结果可以发现,java.sql 存储的时间日期数据也是完整的。

将字符串转换成java.util.Date类型数据

String strDate="2005年04月22日";
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
try {Date date = simpleDateFormat.parse(strDate);System.out.println(date);
} catch (ParseException e) {e.printStackTrace();
}//输出Fri Apr 22 00:00:00 CST 2005

将毫秒数转换成java.util.Date类型数据

long now=System.currentTimeMillis();
System.out.println("毫秒数:"+now);
Date dNow=new Date(now);
System.out.println("日期:"+dNow);//输出
//毫秒数:1546830663261
//日期:Mon Jan 07 11:11:03 CST 2019

二、数据库中存储日期的三种数据类型

Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。

Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。

Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。

Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。

所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-00 00:00:00)

三、数据库中三种数据对应Java中获取数据的存储结果

数据库数据类型为date

Timestamp ctime = new java.sql.Timestamp(new java.util.Date().getTime());
pstmt.setTimestamp(11, ctime);
//存入数据:2019-01-07java.sql.Date ctime = new java.sql.Date(new java.util.Date().getTime());
pstmt.setDate(4, ctime);
//存入数据:2019-01-07

数据库数据类型为datatime

Timestamp ctime = new java.sql.Timestamp(new java.util.Date().getTime());
pstmt.setTimestamp(11, ctime);
//存入数据:2019-01-07 10:35:10Date ctime = new java.sql.Date(new java.util.Date().getTime());
pstmt.setDate(4, ctime);
//存入数据:2019-01-07 00:00:00

数据库数据类型为timestamp

java.sql.Timestamp ctime = new java.sql.Timestamp(new java.util.Date().getTime());
pstmt.setTimestamp(11, ctime);
//存入数据:2019-01-07 10:42:14java.sql.Date ctime = new java.sql.Date(new java.util.Date().getTime());
pstmt.setDate(4, ctime);
//存入数据:2019-01-07 00:00:00

由datatime和timestamp的对比可以看出,两者在数据库中的存储内容相同(格式不同),关于timestamp类型数据的取值范围问题参考:Java获取系统时间日期存储到数据库Timestamp时间限制_java 保存timestamp_想要飞的鱼儿的博客-CSDN博客。其次,虽然在java.sql.Timestamp和java.sql.Date中都存储的是完整的时间日期数据,但是在向数据库写入时结果却不相同

四、java.util和java.sql之间时间日期的转换

java.util.Date通常情况下用它获取当前时间或构造时间,java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分。它们都有getTime方法返回毫秒数,都可以直接构造

通过getTime()方法将util.date转换成sql.date

java.util.Date utilDate = new java.util.Date();  //获取当前时间
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());  //通过getTime()转换

通过getTime()方法将sql.date转换成util.date

java.util.Date utilDate = new java.util.Date(sqlDate.getTime());  //通过getTime()转换,一般sql.date在数据库的存取时使用。

http://www.lryc.cn/news/2419788.html

相关文章:

  • assert_param 错误的解决方法
  • [Mysql] LIKE与通配符
  • 利用百度点击原理提升关键词排名
  • 禁用的灰色文本框、按钮的克星
  • web应用项目开发
  • window.open()和window.showModalDialog 的使用及传值操作
  • c语言程序的生命周期(编写、预处理、编译、汇编、链接、执行)
  • 四个数列(二分查找)
  • IoU,GIoU,DIoU、CIoU详解
  • System.ArgumentException HResult=-2147024809 Message=参数无效。 Source=System.Drawing
  • 标志位寄存器与CF、OF标志位的区分
  • 史上可以针对大部分对于鼠标右键菜单的设置
  • 常用协议对应的端口号
  • Javaweb开发项目之JS知识(JavaScript)
  • 日本推出罩杯测量APP,罩杯大小一夹便知!
  • AFL实战
  • 中国家装水管十大品牌排行榜:联塑、日丰、金牛、弗锐德、美尔固等品牌上榜
  • 字体下载_ps字体打包下载,送你1.15G+316款可用字体
  • 8005端口导致的阿里云上的tomcat无法外部访问
  • 2021-09-18堡垒机
  • SuperMap iMobile for Android许可介绍
  • Phoenix 的 thick Client 和 thin Client
  • Actix-Web构建一个简单的HTTP服务器
  • 51单片机原理以及接口技术(四)--80C51的程序设计
  • greensock下载_GreenSock动画平台初学者指南
  • 手把手叫你做ToDoList
  • 解密:2012世界末日其实是个大骗局
  • 算法设计与分析——背诵知识点合集
  • 霍夫曼(Huffman)编码算法详解之C语言版
  • 强度理论介绍和惯性矩推导