您的位置:首页 > 运维架构 > Linux

Linux下读取Windows磁盘文件及USB闪存上的文件

2008-03-21 16:43 405 查看
日期在String和Date类型转换;ParsePosition,formatter.parse,java.sql.T...

将String型的“****年**月**日”转换成Date型
privateDateDTStringtoDate(StringdtToDate){
  
  SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
  ParsePositionpos=newParsePosition(0);  
  java.util.Datedatetime=formatter.parse(dtToDate,pos);
  java.sql.Timestampts=null;  
  
  if(datetime!=null){
   
   ts=newjava.sql.Timestamp(datetime.getTime());
  }
  
  returnts;
}

 

分析如下:
1.
ParsePositionpos=newParsePosition(0);      从第一个字符开始解析

publicclassParsePositionextendsObject


ParsePosition
Format
及其子类所使用的简单类,用来在分析过程中跟踪当前位置。

2.java.util.Datedatetime=formatter.parse(dtToDate,pos);

对参数dtToDate(String类型)从第一个字符开始解析(由pos),转换成java.util.Date类型,
而这个Date的格式为"yyyy-MM-dd"(因为SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");)

3.java.sql.Timestamp(与java.sql.Date)

在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,
若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可

packagepersonal.jessica;
importjava.util.Date;
importjava.util.Calendar;
importjava.sql.Timestamp;
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.Locale;
classDatetest{
/**
*method将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*@paramdateString需要转换为timestamp的字符串
*@returndataTimetimestamp
*/
publicfinalstaticjava.sql.Timestampstring2Time(StringdateString)
  throwsjava.text.ParseException{
  DateFormatdateFormat;
  dateFormat=newSimpleDateFormat("yyyy-MM-ddkk:mm:ss.SSS",Locale.ENGLISH);//设定格式
  //dateFormat=newSimpleDateFormat("yyyy-MM-ddkk:mm:ss",Locale.ENGLISH);
  dateFormat.setLenient(false);
  java.util.DatetimeDate=dateFormat.parse(dateString);//util类型
  java.sql.TimestampdateTime=newjava.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
  returndateTime;
}
/**
*method将字符串类型的日期转换为一个Date(java.sql.Date)
*@paramdateString需要转换为Date的字符串
*@returndataTimeDate
*/
publicfinalstaticjava.sql.Datestring2Date(StringdateString)
  throwsjava.lang.Exception{
  DateFormatdateFormat;
  dateFormat=newSimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
  dateFormat.setLenient(false);
  java.util.DatetimeDate=dateFormat.parse(dateString);//util类型
  java.sql.DatedateTime=newjava.sql.Date(timeDate.getTime());//sql类型
  returndateTime;
}

publicstaticvoidmain(String[]args){
  Dateda=newDate();
  //注意:这个地方da.getTime()得到的是一个long型的值
  System.out.println(da.getTime());
  
  //由日期date转换为timestamp
  
  //第一种方法:使用newTimestamp(long)
  Timestampt=newTimestamp(newDate().getTime());
  System.out.println(t);

  //第二种方法:使用Timestamp(intyear,intmonth,intdate,inthour,intminute,intsecond,intnano)
  Timestamptt=newTimestamp(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{
   StringsToDate="2005-8-18";//用于转换成java.sql.Date的字符串
     StringsToTimestamp="2005-8-1814:21:12.123";//用于转换成java.sql.Timestamp的字符串
     Datedate1=string2Date(sToDate);
     Timestampdate2=string2Time(sToTimestamp);
   System.out.println("Date:"+date1.toString());//结果显示
   System.out.println("Timestamp:"+date2.toString());//结果显示
  }catch(Exceptione){
   e.printStackTrace();
  }
}
}

===========================
怎样处理一个时间段,比如某人登陆了xx天xx小时xx分xx秒

这个问题可以如下处理:
首先你肯定可以从数据库中读取这个用户第一次登陆的具体时间:
不妨为2002-01-0112:00:00
同样他到目前为止最后登陆的具体时间:
不妨为2002-09-0813:14:15
若取得是数据本来就是时间类型的,则不用转化,若是String的则可以在转化后处理。

你可以利用类似上面的例子,取得这两个时间对应的Timestamp值dateTime
然后使用dateTime.getTime()方法得到这两个时间的long值,进行相减(大的减小的,即按时间后减先),得到一个long值,它是用毫秒milliseconds计算的,你将它换算一下就知道多少天多少小时多少分多少秒了
比如首先除于(java中/除)一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时……最后就可以得到所有的需求了

为了您的安全,请只打开来源可靠的网址
打开网站    取消

来自:http://hi.baidu.com/%B8%FD%C4%C4/blog/item/280b4f1807ab4b4f43a9adbf.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: