Timestamp有两个构造方法

Timestamp 有两个构造方法:

new Timestmap(Long),就是上面java.sql.Timestamp now = new java.sql.Timestamp ((new java.util.Date ()).getTime());的方法,((new java.util.Date ()).getTime()返回的是个Long

还有new Timestamp (int year,int month,int date ,int hour,int minute,int second,int millisecond),印象中生成是int year = 当前年 - 1400,int month = 当前月 - 1
不过这个构造方法不是不推荐的

EJB里DATE 型的字段用setTimestamp(column,Timestamp )来设。

在开发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 date 1 = string2Date (sToDate);
      Timestamp date 2 = string2Time(sToTimestamp);
    System.out.println("Date :"+date 1.toString());//结果显示
    System.out.println("Timestamp :"+date 2.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中/除)一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时……最后就可以得到所有的需求了

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值