- 浏览: 42027 次
- 性别:
- 来自: 深圳
文章分类
在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可
package personal.jessica;
import java.util.Date;
import java.util.Calendar;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
class Datetest{
/**
*method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*@param dateString 需要转换为timestamp的字符串
*@return dataTime timestamp
*/
public final static java.sql.Timestamp string2Time(String dateString)
throws java.text.ParseException {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式
//dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
return dateTime;
}
/**
*method 将字符串类型的日期转换为一个Date(java.sql.Date)
*@param dateString 需要转换为Date的字符串
*@return dataTime Date
*/
public final static java.sql.Date string2Date(String dateString)
throws java.lang.Exception {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
return dateTime;
}
public static void main(String[] args){
Date da = new Date();
//注意:这个地方da.getTime()得到的是一个long型的值
System.out.println(da.getTime());
//由日期date转换为timestamp
//第一种方法:使用new Timestamp(long)
Timestamp t = new Timestamp(new Date().getTime());
System.out.println(t);
//第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
Timestamp tt = new Timestamp(Calendar.getInstance().get(
Calendar.YEAR) - 1900, Calendar.getInstance().get(
Calendar.MONTH), Calendar.getInstance().get(
Calendar.DATE), Calendar.getInstance().get(
Calendar.HOUR), Calendar.getInstance().get(
Calendar.MINUTE), Calendar.getInstance().get(
Calendar.SECOND), 0);
System.out.println(tt);
try {
String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
Date date1 = string2Date(sToDate);
Timestamp date2 = string2Time(sToTimestamp);
System.out.println("Date:"+date1.toString());//结果显示
System.out.println("Timestamp:"+date2.toString());//结果显示
}catch(Exception e) {
e.printStackTrace();
}
}
}
怎样处理一个时间段,比如某人登陆了xx天xx小时xx分xx秒
这个问题可以如下处理:
首先你肯定可以从数据库中读取这个用户第一次登陆的具体时间:
不妨为2002-01-01 12:00:00
同样他到目前为止最后登陆的具体时间:
不妨为2002-09-08 13:14:15
若取得是数据本来就是时间类型的,则不用转化,若是String的则可以在转化后处理。
你可以利用类似上面的例子,取得这两个时间对应的Timestamp值dateTime
然后使用dateTime.getTime()方法得到这两个时间的long值,进行相减(大的减小的,即按时间后减先),得到一个long值,它是用毫秒milliseconds计算的,你将它换算一下就知道多少天多少小时多少分多少秒了
比如首先除于(java中/除)一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时……最后就可以得到所有的需求了
TIME Java.sql.Time 时戳,TIMESTAMP Java.sql.Timestamp 当日日期和时间,
对应的ResultSet的方法
DATE java.sql.Date java.sql.Date getDate()
TIME java.sql.Time java.sql.Time getTime()
TIMESTAMP java.sql.Timestamp java.sql.Timestamp getTimestamp()
根据java2的规范要求使用Java.sql.Timestamp,这样不会失去精度详见(http://blogger.org.cn/blog/more.asp?name=hongrui&id=7557)。对于oracle数据库比较例外,可以用oracle.sql.TIMESTAMP
这和他的版本也有关系。注意,SQLserver中timestamp 对应的是 DateTime类型。
使用spring的jdbc时,尽可能用Java.sql.Timestamp详见(http://blogger.org.cn/blog/more.asp?name=hongrui&id=9521)。
下面给个例子
public static java.sql.Timestamp getDBSysdate(Connection conn)
throws Exception {
Statement stmt = null;
ResultSet rs = null;
Timestamp sysTime = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT SYSDATE FROM DUAL");
if (rs.next()) {
sysTime = rs.getTimestamp("SYSDATE");
}
} catch (Exception e) {
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
}
}
return sysTime;
}
最好的办法使用long存时间,使用Calendar 处理,就是表示日期时间不直观。
2.字符串转化时间,注意不能判断时间输入是否正确,判断时间输入是否正确,请使用正则。
try
{
String st="2005-13-32 12:00";
java.text.DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Date starttime = df.parse(st);
System.out.println(starttime.toString());
}
catch(Exception ex)
{
}
不要搞混了try-catch的功能。只有程序或系统抛出了异常,try-catch才能捕获 ,得到Wed Feb 01 00:00:00 CST 2006
这样操作是错误的,Timestamp是java.util.Date,会得到java.lang.ClassCastException,你犯了向下转型的错误。
try
{
String st="2005-13-32 12:00";
java.text.DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Timestamp starttime =(Timestamp) df.parse(st);
System.out.println(starttime.toString());
}
catch(Exception ex)
{
ex.printStackTrace();
}
应该使用
try {
String st = "2005-12-2 12:00:00";
Timestamp starttime = Timestamp.valueOf(st);
System.out.println(starttime.toString());
} catch (Exception ex) {
ex.printStackTrace();
}
或
import java.sql.*;
import java.util.*;
public class CreateTimestamp {
public static void main(String [] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2000);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 45);
cal.set(Calendar.SECOND, 30);
cal.set(Calendar.MILLISECOND, 0);
long millis = cal.getTime().getTime();
System.out.println("milliseconds in millis = " + millis);
java.sql.Timestamp ts = new java.sql.Timestamp(millis);
System.out.println("Timestamp ts before setting nanos = " + ts);
ts.setNanos(500);
System.out.println("Timestamp ts with nanos set = " + ts);
}
}
下面给出javadoc的方法
1. java.sql.Date.valueOf(java.lang.String)
public static Date valueOf(String s)
Converts a string in JDBC date escape format to a Date value.
Parameters:
s - a String object representing a date in in the format "yyyy-mm-dd"
Returns:
a java.sql.Date object representing the given date
Throws:
IllegalArgumentException - if the date given is not in the JDBC date escape format (yyyy-mm-dd)
2. java.sql.Time.valueOf(java.lang.String)
public static Time valueOf(String s)
Converts a string in JDBC time escape format to a Time value.
Parameters:
s - time in format "hh:mm:ss"
Returns:
a corresponding Time object
3. java.sql.Timestamp.valueOf(java.lang.String)
public static Timestamp valueOf(String s)
Converts a String object in JDBC timestamp escape format to a Timestamp value.
Parameters:
s - timestamp in format yyyy-mm-dd hh:mm:ss.fffffffff
Returns:
corresponding Timestamp value
Throws:
IllegalArgumentException - if the given argument does not have the format yyyy-mm-dd hh:mm:ss.fffffffff
发表评论
-
如何使用Log4j?
2012-02-22 17:26 01、 Log4j是什么? Log4j可以帮助调试(有时候d ... -
struts1和struts2区别
2011-08-03 11:36 675struts1和struts2区别 特性 Struts 1 ... -
会议管理
2011-06-26 23:31 693会议管理 -
页面特效右下角弹出窗口
2011-06-22 21:30 1082<%@ page language="java ... -
android入门与实践
2011-04-28 00:07 1310ActivityMain.java package com. ... -
Android开发环境的搭建与配置一
2011-04-15 21:47 645Android开发环境的搭建与配置 -
JAVA 框
2010-07-31 12:45 712中心朝鲜战场 -
80端口占用异常解决方法java.net.BindException: Address already in use: JVM_Bind:80(或8080)
2010-07-16 14:46 22381:Tomcat(或其他Web容器)启动时控制台报错如下示: ... -
常用连接
2010-07-01 15:57 925102318210 http://v.youku.com/v ... -
XML和属性文件读取和写入
2010-07-01 15:57 1013XML和属性文件的读取和写入
相关推荐
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); ``` ##### 2. `java.sql.Date`转换为`java.util.Date` 同样地,将`java.sql.Date`转换为`java.util.Date`也很容易实现。 ```java java.sql.Date...
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); 反之,亦可以将java.sql.Date转换为java.util.Date: java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); java.util.Date...
Java编程语言提供了多种日期时间类来处理不同的场景需求,其中`java.util.Date`和`java.sql.Date`是两个常见的日期类型,它们之间存在一定的差异和转换关系。 `java.util.Date`是Java标准库中的基础日期类,它表示...
`java.sql.Time`仅包含时间信息(小时、分钟和秒),而`Timestamp`则包含日期和时间,精度到纳秒,可以视为`java.util.Date`的增强版,适用于需要高精度的场景。 在数据库操作中,有时需要将字符串转换为`java.sql....
类型转换 ( Java.util.date与java.sql.date区别和转换
了解这两个类的区别和转换方式对于编写健壮的Java应用程序至关重要,特别是在进行数据库操作时。随着Java版本的更新,推荐使用`java.time`包中的类来处理日期和时间,因为它们提供了更直观和强大的API。
Java 中的 Date、String 和 Timestamp 之间的转换问题 Java 中的日期和时间处理是编程中非常重要的一方面,Date、String 和 Timestamp 是三种常用的日期和时间类型,本文将详细介绍它们之间的转换问题。 一、获取...
首先,使用 SimpleDateFormat 需要将字符串类型的日期数据解析成 java.util.Date 类型,然后使用 java.sql.Timestamp 将其转换成 Timestamp 对象。最后,可以直接将 Timestamp 对象插入到 SQLite 数据库中。 取出 ...
- `java.util.Date`(Java的日期时间类)可以转换为`java.sql.Date`、`java.sql.Time`或`java.sql.Timestamp`,通过`SimpleDateFormat`进行格式化。 - `java.time.*`(Java 8引入的新日期时间API)的类如`...
本文将深入探讨`java.util.Date`、`java.util.Calendar`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`这五种日期时间类之间的区别和联系。 #### 1. `java.util.Date` `java.util.Date`类是Java中表示...
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println("转换后的SQL Date为: " + sqlDate); } } ``` 通过调用`java.sql.Date`的构造函数,并传入`java.util.Date`对象的毫秒...
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println(sqlDate); } } ``` 这段代码展示了如何通过调用`java.sql.Date`的构造函数,并传入`java.util.Date`的毫秒值来实现转换。 ...
import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import ...
Java提供了多种时间类来满足不同的需求,包括`java.util.Date`, `java.sql.Date`, `java.sql.Time`, `java.sql.Timestamp`, `java.text.SimpleDateFormat`, 和 `java.util.Calendar`。下面我们将深入探讨这些类的...
基于Java 日期转换类: 支持如下(以下的方法格式都可以自定义): 将java.util.Date类型格式化成字符串显示...将字符串转换成java.sql.Date类型 将字符串转换成Timestamp类型 比较两个时间的时间差,返回格式为x天x时x分x秒
关键在于正确地将`java.util.Date`转换为`java.sql.Date`或`java.sql.Timestamp`,以便能够被`setDate()`和`setTimestamp()`方法所接受。这种方法不仅可以避免类型不匹配的错误,还可以确保数据被准确无误地插入到...
DATE 对应的 JDBC 类型是 java.sql.Types.DATE,Java 类型是 java.sql.Date。TIMESTAMP 对应的 JDBC 类型是 java.sql.Types.TIMESTAMP,Java 类型是 java.sql.Timestamp。 4. 二进制类型 RAW 对应的 JDBC 类型是...
public java.sql.Timestamp getTimestamp(java.sql.Timestamp a); public java.sql.Date getSDate(java.sql.Date a); public java.sql.Time getTime(java.sql.Time a); /*自定义类型*/ public UserBean getUser...
java.sql.Date sqlDate = new java.sql.Date(sqlTimestamp.getTime()); ``` 需要注意的是,`SimpleDateFormat`的`setLenient(false)`方法用于确保日期时间格式的严格匹配,避免因不规范的输入导致意外的结果。 在...