Java.util.Date与java.sql.Date转换与字符串日期解析指南
版权申诉
188 浏览量
更新于2024-08-18
收藏 67KB DOCX 举报
在Java编程中,`java.util.Date`和`java.sql.Date`是两种处理日期和时间的重要类,它们在数据库操作中经常被用于日期数据的存储和交互。本文档主要讨论了这两个类之间的互转以及字符串转换为日期时间格式的过程。
首先,我们来看如何将`java.util.Date`转换为`java.sql.Date`。`java.util.Date`是Java内置的日期和时间类,代表的是从1970年1月1日(UTC)以来的毫秒数。而`java.sql.Date`则是`java.sql`包下的一个日期类型,它只包含日期部分,不包括时间。要进行转换,可以创建一个`java.util.Date`对象,然后通过其`getTime()`方法获取毫秒值,并将其赋值给`java.sql.Date`的构造函数,如下所示:
```java
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
```
在将`java.util.Date`插入数据库时,如果数据库字段是Date类型,通常使用`PreparedStatement`的`setDate()`方法。例如,如果数据库提供`TO_DATE`函数,你可以利用`SimpleDateFormat`将`java.util.Date`格式化为数据库期望的格式(如"yy-MM-dd HH:MM:ss"),然后再调用`TO_DATE`函数:
```java
String x = "2007-07-12";
String formatStr = "yy-MM-dd HH24:MI:SS";
String formattedX = new SimpleDateFormat(formatStr).format(x);
sql = "update tablename set timer = to_date('" + formattedX + "', 'YY-MM-DDHH24:MI:SS') where ...";
```
接下来,如果需要将字符串按照"yy-mm-dd"格式转换为`java.sql.Date`,这里有两种方法:
方法1:使用`SimpleDateFormat`进行解析。创建一个`SimpleDateFormat`对象,指定输入字符串的格式,然后尝试解析并转换为`java.util.Date`,最后通过`java.util.Date`的`getTime()`得到`java.sql.Date`:
```java
SimpleDateFormat bartDateFormat = new SimpleDateFormat("yy-MM-dd");
String dateStringToParse = "2007-07-12";
try {
java.util.Date date = bartDateFormat.parse(dateStringToParse);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
System.out.println(sqlDate.getTime());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
```
方法2:利用`StringTokenizer`分割字符串,根据"-"分隔符提取年、月、日,然后直接创建`java.sql.Date`对象:
```java
String strDate = "2002-08-09";
StringTokenizer st = new StringTokenizer(strDate, "-");
int year = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken());
int day = Integer.parseInt(st.nextToken());
java.sql.Date date = new java.sql.Date(year * 365 + month * 30 + day);
```
总结一下,`java.util.Date`和`java.sql.Date`之间的转换需要注意格式的匹配,以及数据库对日期时间格式的需求。在实际开发中,了解并正确处理这些转换有助于避免数据不一致和数据操作的错误。同时,字符串格式化和解析是日期时间编程中的基础技能,熟练掌握可以帮助提高代码的准确性和可维护性。
2024-06-28 上传
2021-12-18 上传
2021-10-25 上传
2020-08-24 上传
2021-12-18 上传
2021-12-18 上传
2021-11-14 上传
2022-06-09 上传
2021-12-18 上传
无敌开心
- 粉丝: 1941
- 资源: 10万+
最新资源
- 编译器2
- 电子功用-多层陶瓷电子元件用介电糊的制备方法
- JLex and CUP Java based Decompiler-开源
- 管理系统系列--自动发卡系统(包含前台以及后台管理系统),对接payjs支付(无须企业认证).zip
- 整齐的块
- goit-markup-hw-03
- (课程设计)00.00-99.99 数字电子秒表(原理图、PCB、仿真电路及程序等)-电路方案
- DiskUsage.0:适用于 Android 的 DiskUsage 应用程序
- HonorLee.me:我的Hexo博客
- DZ3-卡塔琳娜·米尔伊科维奇
- 管理系统系列--智慧农业集成管理系统.zip
- 毕业设计:基于Java web的学生信息管理系统
- (资料汇总)PCF8591模块 AD/DA转换模块(原理图、测试程序、使用说明等)-电路方案
- CampaignFinancePHL:使费城的竞选财务数据更易于理解
- Week09-Day02
- JiraNodeClient:用于从Jira导出导入数据的NodeJS工具