转自:https://www.xuebuyuan.com/1479399.html

在开发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类型

//Timestamp类型,timeDate.getTime()返回一个long型
    java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());
    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中/除)一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时……最后就可以得到所有的需求了。

java.sql.Date和java.sql.Timestamp转换的更多相关文章

  1. java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  2. JAVA中java.util.Date、java.sql.Timestamp和String之间的互相转换

    java.util.Date与的String互转 java.util.Date---->String /** * 将java.util.Date对象转化为String字符串 * @param d ...

  3. [转]java.util.Date和java.sql.Date转换

    Date 的类型转换:首先记住java.util.Date 为 java.sql.Date的父类 1.将java.util.Date 转换为 java.sql.Date java.lang.Class ...

  4. java.sql.date和java.util.date的区别和转换

    不同点:java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分java.util.Date 是 java.sql. ...

  5. java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结

    java.lang.Object ....|__java.util.Date ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time ...

  6. java.util.Date 与 java.sql.Date 之间的转换

    SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); String dateStr = sdf.for ...

  7. java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结

    在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Date.java.sql.Time.java.sq ...

  8. java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系

    java.util.Date.java.sql.Date.java.sql.Time.java.sql.Timestamp区别和联系 栏目:Java基础 作者:admin 日期:2015-04-19  ...

  9. java.util.Date和java.sql.Date之间的转换

    java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它 们都有getTime方法返回毫秒数,自然就可以直接构建. ...

随机推荐

  1. PHP 小程序发模板消息

    记录一下DEMO <?php function getAccessToken ($appid, $appsecret) { $url='https://api.weixin.qq.com/cgi ...

  2. python-learning-第二季-数据处理numpy

    https://www.bjsxt.com/down/8468.html numpy-科学计算基础库 例子: import numpy as np #创建数组 a = np.arange() prin ...

  3. 【插件式框架探索系列】使用多UI线程提升性能

    了解WPF线程模型的都知道,UI线程负责呈现和管理UI,而UI元素(派生自 DispatcherObject)只能由创建该元素的线程来访问,这就导致了一些耗时的UI操作将影 响到整个应用程序性能,未响 ...

  4. Opencv拉普拉斯算子做图像增强

    Opencv拉普拉斯算子——图像增强 #include <iostream> #include <opencv2/opencv.hpp> using namespace std ...

  5. matlab基本函数min

    一起来学演化计算-matlab基本函数min 觉得有用的话,欢迎一起讨论相互学习~Follow Me 找到数组中最小的元素 语法 M = min(A) 返回A的最小元素 如果A是一个向量,那么min( ...

  6. 解释张量及TF的一些API

    张量的定义 张量(Tensor)理论是数学的一个分支学科,在力学中有重要应用.张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具.张 ...

  7. centos7.6 升级openssh openssl

    centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openssh的rpm ...

  8. django自带的用户验证是验证username和password,如何自定义验证功能,让mobil也能作为账户名登录?

    users.views.pyfrom django.contrib.auth.backends import ModelBackendfrom django.db.models import Qcla ...

  9. IP通信学习心得03

    三.TCP.三次握手.四次挥手 1.TCP数据包结构 注: A:序列号字段是所发字节的第一个字节的序号. B:报头最大长度为60个字节(4bits),最小为20个字节. C:  发送窗口由接收窗口决定 ...

  10. linux编程 新建一个进程的方法

    学习到一种,直接调用系统函数,在类的构造函数中直接启动一个线程,例如,某个类是用来监听串口的,可以直接在其构造函数中调用系统函数,开辟一个进程,在该进程对应的函数中不断while(1){....} h ...