I'll be back!

            Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
          posts - 76, comments - 161, trackbacks - 0, articles - 2
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          JAVA中日期格式轉(zhuǎn)換

          Posted on 2006-09-25 10:34 zolly 閱讀(9200) 評(píng)論(0)  編輯  收藏
          /**
          ???*?字符串轉(zhuǎn)換為java.util.Date<br>
          ???*?支持格式為?yyyy.MM.dd?G?'at'?hh:mm:ss?z?如?'2002-1-1?AD?at?22:10:59?PSD'<br>
          ???*?yy/MM/dd?HH:mm:ss?如?'2002/1/1?17:55:00'<br>
          ???*?yy/MM/dd?HH:mm:ss?pm??如?'2002/1/1?17:55:00?pm'<br>
          ???*?yy-MM-dd?HH:mm:ss?如?'2002-1-1?17:55:00'?<br>
          ???*?yy-MM-dd?HH:mm:ss?am?如?'2002-1-1?17:55:00?am'?<br>
          ???*?
          @param ?time?String?字符串<br>
          ???*?
          @return ?Date?日期<br>
          ???
          */

          ??
          public ? static ?Date?stringToDate(String?time) {
          ????SimpleDateFormat?formatter;
          ????
          int ?tempPos = time.indexOf( " AD " )?;
          ????time
          = time.trim()?;
          ????formatter?
          = ? new ?SimpleDateFormat?( " yyyy.MM.dd?G?'at'?hh:mm:ss?z " );
          ????
          if (tempPos >- 1 ) {
          ??????time
          = time.substring( 0 ,tempPos) +
          ???????????
          " 公元 " + time.substring(tempPos + " AD " .length()); // china
          ??????formatter? = ? new ?SimpleDateFormat?( " yyyy.MM.dd?G?'at'?hh:mm:ss?z " );
          ????}

          ????tempPos
          = time.indexOf( " - " );
          ????
          if (tempPos >- 1 && (time.indexOf( " ? " ) < 0 )) {
          ??????formatter?
          = ? new ?SimpleDateFormat?( " yyyyMMddHHmmssZ " );
          ????}

          ????
          else ? if ((time.indexOf( " / " ) >- 1 )? && (time.indexOf( " ? " ) >- 1 )) {
          ??????formatter?
          = ? new ?SimpleDateFormat?( " yyyy/MM/dd?HH:mm:ss " );
          ????}

          ????
          else ? if ((time.indexOf( " - " ) >- 1 )? && (time.indexOf( " ? " ) >- 1 )) {
          ??????formatter?
          = ? new ?SimpleDateFormat?( " yyyy-MM-dd?HH:mm:ss " );
          ????}

          ????
          else ? if ((time.indexOf( " / " ) >- 1 )? && (time.indexOf( " am " ) >- 1 )? || (time.indexOf( " pm " ) >- 1 )) {
          ??????formatter?
          = ? new ?SimpleDateFormat?( " yyyy-MM-dd?KK:mm:ss?a " );
          ????}

          ????
          else ? if ((time.indexOf( " - " ) >- 1 )? && (time.indexOf( " am " ) >- 1 )? || (time.indexOf( " pm " ) >- 1 )) {
          ??????formatter?
          = ? new ?SimpleDateFormat?( " yyyy-MM-dd?KK:mm:ss?a " );
          ????}

          ????ParsePosition?pos?
          = ? new ?ParsePosition( 0 );
          ????java.util.Date?ctime?
          = ?formatter.parse(time,?pos);

          ????
          return ?ctime;
          ??}

          ??
          /**
          ???*?將java.util.Date?格式轉(zhuǎn)換為字符串格式'yyyy-MM-dd?HH:mm:ss'(24小時(shí)制)<br>
          ???*?如Sat?May?11?17:24:21?CST?2002?to?'2002-05-11?17:24:21'<br>
          ???*?
          @param ?time?Date?日期<br>
          ???*?
          @return ?String???字符串<br>
          ???
          */

          ???

          ??
          public ? static ?String?dateToString(Date?time) {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " yyyy-MM-dd?HH:mm:ss " );
          ????String?ctime?
          = ?formatter.format(time);

          ????
          return ?ctime;
          ??}

          ??
          /**
          ???*?將java.util.Date?格式轉(zhuǎn)換為字符串格式'yyyy-MM-dd?HH:mm:ss?a'(12小時(shí)制)<br>
          ???*?如Sat?May?11?17:23:22?CST?2002?to?'2002-05-11?05:23:22?下午'<br>
          ???*?
          @param ?time?Date?日期<br>
          ???*?
          @param ?x?int?任意整數(shù)如:1<br>
          ???*?
          @return ?String?字符串<br>
          ???
          */

          ??
          public ? static ?String?dateToString(Date?time, int ?x) {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " yyyy-MM-dd?KK:mm:ss?a " );
          ????String?ctime?
          = ?formatter.format(time);

          ????
          return ?ctime;
          ??}

          ??
          /**
          ???*取系統(tǒng)當(dāng)前時(shí)間:返回只值為如下形式
          ???*2002-10-30?20:24:39
          ???*?
          @return ?String
          ???
          */

          ??
          public ? static ?String?Now() {
          ????
          return ?dateToString( new ?Date());
          ??}


          ??
          /**
          ???*取系統(tǒng)當(dāng)前時(shí)間:返回只值為如下形式
          ???*2002-10-30?08:28:56?下午
          ???*
          @param ?hour?為任意整數(shù)
          ???*
          @return ?String
          ???
          */

          ??
          public ? static ?String?Now( int ?hour) {
          ????
          return ?dateToString( new ?Date(),hour);
          ??}

          ??
          /**
          ???*取系統(tǒng)當(dāng)前時(shí)間:返回值為如下形式
          ???*2002-10-30
          ???*
          @return ?String
          ???
          */

          ??
          public ? static ?String?getYYYY_MM_DD() {
          ????
          return ?dateToString( new ?Date()).substring( 0 , 10 );

          ??}

          ??
          /**
          ???*取系統(tǒng)給定時(shí)間:返回值為如下形式
          ???*2002-10-30
          ???*
          @return ?String
          ???
          */

          ???
          public ? static ?String?getYYYY_MM_DD(String?date) {
          ????
          return ?date.substring( 0 , 10 );

          ??}


          ??
          public ? static ?String?getHour() {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " H " );
          ????String?ctime?
          = ?formatter.format( new ?Date());
          ????
          return ?ctime;
          ????}


          ??
          public ? static ?String?getDay() {
          ??????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " d " );
          ????String?ctime?
          = ?formatter.format( new ?Date());
          ????
          return ?ctime;
          ????}


          ??
          public ? static ?String?getMonth() {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " M " );
          ????String?ctime?
          = ?formatter.format( new ?Date());
          ????
          return ?ctime;
          ????}

          ??

          ??
          public ? static ?String?getYear() {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " yyyy " );
          ????String?ctime?
          = ?formatter.format( new ?Date());
          ????
          return ?ctime;
          ????}

          ??????
          ??
          public ? static ?String?getWeek() {
          ????SimpleDateFormat?formatter;
          ????formatter?
          = ? new ?SimpleDateFormat?( " E " );
          ????String?ctime?
          = ?formatter.format( new ?Date());
          ????
          return ?ctime;
          ????}
          ?

          在jsp頁(yè)面中的日期格式和sqlserver中的日期格式不一樣,怎樣統(tǒng)一?


          在頁(yè)面上顯示輸出時(shí),用下面的函數(shù)處理一下

          public?class?DateUtil(){
          ????
          public?static?String?fmtShortEnu(Date?myDate)?{
          ????SimpleDateFormat?formatter?
          =?new?SimpleDateFormat("yyyy/MM/dd");
          ????String?strDate?
          =?formatter.format(myDate);
          ????
          return?strDate;
          ??}

          }

          new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          new java.text.SimpleDateFormat("yyyy-MM-dd")
          建議還是把sqlserver的字段類型改成varchar的吧,用字符串處理可以完全按照自己的意愿處理,沒(méi)有特殊的需求,不要使用date型


          字串日期格式轉(zhuǎn)換
          用的API是SimpleDateFormat,它是屬於java.text.SimpleDateFormat,所以請(qǐng)記得import進(jìn)來(lái)!

          用法:
          SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          這一行最重要,它確立了轉(zhuǎn)換的格式,yyyy是完整的西元年,MM是月份,dd是日期, 至於HH:mm:ss就不需要我再解釋了吧!
          ps:為什麼有的格式大寫,有的格式小寫,那是怕避免混淆,例如MM是月份,mm是分;HH是24小時(shí)制,而hh是12小時(shí)制

          1.字串轉(zhuǎn)日期:
           2002-10-8 15:30:22要把它轉(zhuǎn)成日期,可以用
           Date date=sdf.parse("2002-10-8 15:30:22");
          2.日期轉(zhuǎn)字串
           假如把今天的日期轉(zhuǎn)成字串可用
           String datestr=sdf.format(new Date());
           這個(gè)字串的內(nèi)容便類似2002-10-08 14:55:38

          透過(guò)這個(gè)API我們便可以隨心所欲的將日期轉(zhuǎn)成我們想要的字串格式,例如希望將日期輸出成2002年10月08日,
          我們可以這麼寫:
          SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
          String datestr=sdf.format(new Date());
          datestr便會(huì)依照我們?cè)O(shè)定的格式輸出

          //對(duì)日期格式的轉(zhuǎn)換成("yyyy-MM-dd")格式的方法
          public?java.sql.Date?Convert(String?str)
          ??
          {
          ????java.text.SimpleDateFormat?sdf?
          =?new?java.text.SimpleDateFormat("yyyy-MM-dd");
          ????
          try
          ????
          {
          ??????java.util.Date?d?
          =?sdf.parse(str);
          ??????java.sql.Date?d1?
          =?new?java.sql.Date(d.getTime());
          ??????
          return?d1;
          ????}

          ????
          catch(Exception?ex)
          ????
          {
          ??????ex.printStackTrace();
          ??????
          return?null;
          ????}

          ??}


          應(yīng)用如下:
          ctmt.setDate(7,this.Convert(info.getManBirth()));? // @DATETIME

          獲得本月一日、本星期星期一、昨天的date對(duì)象的方法:(摘自:http://www.aygfsteel.com/qclass/archive/2006/09/24/71589.html)

          ????????GregorianCalendar?cal??=???new??GregorianCalendar();
          ????????Date?now??
          =???new??Date();
          ????????cal.setTime(now);
          ????????cal.setFirstDayOfWeek(GregorianCalendar.MONDAY);???
          //?設(shè)置一個(gè)星期的第一天為星期1,默認(rèn)是星期日?
          ????????SimpleDateFormat?dateutil??=???new??SimpleDateFormat(?"?yyyy-MM-dd?"?);
          ????????System.out.println(?
          "?now=?"?+?dateutil.format(cal.getTime()));??//?今天?
          ????????
          ????????cal.add(GregorianCalendar.DATE,?
          -?1?);
          ????????System.out.println(?
          "?now=?"?+?dateutil.format(cal.getTime()));?//?昨天?????????
          ????????
          ????????cal.set(GregorianCalendar.DAY_OF_WEEK,?GregorianCalendar.MONDAY);
          ????????System.out.println(?
          "?now=?"?+?dateutil.format(cal.getTime()));???//?本周1?

          ????????cal.set(GregorianCalendar.DAY_OF_MONTH,??
          1?);?
          ????????System.out.println(?
          "?now=?"?+?dateutil.format(cal.getTime()));?//?本月1日?


          摘自:http://www.aygfsteel.com/galaxyp/archive/2006/04/13/40826.html

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 甘泉县| 子洲县| 板桥市| 西青区| 界首市| 莱州市| 山东省| 玉龙| 湘西| 九龙坡区| 鹰潭市| 绥棱县| 万山特区| 梅河口市| 绥德县| 临泉县| 子长县| 易门县| 酒泉市| 来凤县| 台安县| 平果县| 盘山县| 邹城市| 阿图什市| 长乐市| 夹江县| 蒲江县| 巍山| 天镇县| 东阳市| 集安市| 如皋市| 巢湖市| 庄河市| 香港| 南陵县| 额尔古纳市| 龙井市| 翁牛特旗| 沽源县|