斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          有兩個簡單例子,以說明 “exists”和“in”的效率問題

          1) select * from T1 where exists(select * from T2 where T1.a=T2.a) ;

              T1數據量小而T2數據量非常大時,T1<<T2 時,1) 的查詢效率高。

          2) select * from T1 where T1.a in (select T2.a from T2) ;

               T1數據量非常大而T2數據量小時,T1>>T2 時,2) 的查詢效率高。

          exists 用法:

          1)句中的“select * from T2 where T1.a=T2.a” 相當于一個關聯表查詢,

               相當于“select * from T1,T2  where T1.a=T2.a”;

              “exists(xxx)”它只在乎括號里的數據能不能查找出來,是否存在這樣的記錄,如果存在,這1)句的where 條件成立。

          in的用法:

          2)句中的“select * from T1 where T1.a in (select T2.a from T2) ”,這里的“in”后面括號里的語句搜索出來的字段的內容一定要相對應,一般來說,T1和T2這兩個表的a字段表達的意義應該是一樣的,否則這樣查沒什么意義。

          ---------------------------------------------------------------

          +++++++++++++   下面轉載  +++++++++++++++++++

          ---------------------------------------------------------------

          今天市場報告有個sql及慢,運行需要20多分鐘,如下:
          update p_container_decl cd
          set cd.ANNUL_FLAG=\'0001\',ANNUL_DATE = sysdate
          where exists(
          select 1
          from (
          select tc.decl_no,tc.goods_no
          from p_transfer_cont tc,P_AFFIRM_DO ad
          where tc.GOODS_DECL_NO = ad.DECL_NO
          and ad.DECL_NO = \'sssssssssssssssss\'
          ) a
          where a.decl_no = cd.decl_no
          and a.goods_no = cd.goods_no
          )
          上面涉及的3個表的記錄數都不小,均在百萬左右。根據這種情況,我想到了前不久看的tom的一篇文章,說的是exists和in的區別,in 是把外表和那表作hash join,而exists是對外表作loop,每次loop再對那表進行查詢。
          這樣的話,in適合內外表都很大的情況,exists適合外表結果集很小的情況。

          而我目前的情況適合用in來作查詢,于是我改寫了sql,如下:
          update p_container_decl cd
          set cd.ANNUL_FLAG=\'0001\',ANNUL_DATE = sysdate
          where (decl_no,goods_no) in
          (
          select tc.decl_no,tc.goods_no
          from p_transfer_cont tc,P_AFFIRM_DO ad
          where tc.GOODS_DECL_NO = ad.DECL_NO
          and ad.DECL_NO = ‘ssssssssssss’
          )

          讓市場人員測試,結果運行時間在1分鐘內。問題解決了,看來exists和in確實是要根據表的數據量來決定使用。

          --------------------------------------------------------------------------


          posted @ 2009-02-01 17:54 斷點 閱讀(240) | 評論 (0)

          posted @ 2010-01-14 21:42 斷點 閱讀(301) | 評論 (0)編輯 收藏

          在卸載Oracle時刪不干凈,搞的要重裝系統,本人在工作中總結出如下方法,希望對大家有所幫助。
          注意:oracle的源程序的路徑必須是英文路徑,否則安裝會出錯!

          1.以Administrators 身份登陸windows系統。
          2.停掉Oracle Service服務。 
          3.通過Oracle installer 卸載任何orcle產品及組件。
          4.刪除%ORACLE_base%文檔和SYSTEM_DRIVE:\program files下的oracle文檔。
          5.刪除SYSTEM_DRIVE:\Documents and Settings\All Users\「開始」菜單\程式中的oracle項。
          6.在“開始菜單”—點“運行”—輸入“regedit”打開注冊表:
             到HKEY_CLASSES_ROOT下,刪除以Oracle,ORA,ORCL開頭的鍵;
             到HKEY_LOCAL_MACHINE\SOFTWARE下,刪除ORACLE鍵和Apache Group鍵;
             到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,刪除以Oracle開頭的鍵;
             到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \Eventlog\Application下,刪除以Oracle
          開頭的鍵;
            到HKEY_CURRENT_USER下,刪除Oracle鍵;
            到HKEY_CURRENT_USER\SOFTWARE\ORACLE下,刪除以Oracle 或 Orcl開頭的鍵(假如有的話);
          7.打開系統系統環境變量(我的電腦->右鍵->系統屬性->高級->環境變量),在PATH中刪除任何以%
          ORACLE_HOME%開始的項。
          8.重啟電腦。


          posted @ 2008-12-18 12:37 斷點 閱讀(68) | 評論 (0)

          posted @ 2010-01-14 21:41 斷點 閱讀(252) | 評論 (0)編輯 收藏

          一、建庫和建表以及插入數據的實例。
          drop database if exists school; -- 如果存在SCHOOL則刪除
          create database school; -- 建立庫SCHOOL
          use school; -- 打開庫SCHOOL
          create table teacher -- 建立表TEACHER
          (
          id integer auto_increment not null primary key,
          name varchar(10) not null
          ); -- 建表結束
          insert into teacher values(null,'t');
          insert into teacher values(null,'j');
          在dos下命令不方便調試,你可以將以上命令寫入一個文件中取名為school.sql,然后復制到c:\下,并在DOS窗口下鍵入以下命令:mysql -uroot -p密碼 < c:/school.sql。

          二、Windows下.sql文件的導入導出。
          DOS窗口:開始->運行->cmd
          導入為:mysql -uroot -proot<c:/school.sql
          導出為:mysqldump -uroot -proot school>c:/school.sql

          三、數據的備份(命令在DOS窗口下執行):
          1.備份數據庫:(將數據庫school備份)
          mysqldump -uroot -proot school>c:/school.sql
          2.將備份數據導入到數據庫:(導回school數據庫)
          mysql -uroot -proot school<c:/school.sql
          注意:此時已有數據庫school。
          注意:另一種方式,就是進入mysql數據庫控制臺,use school,然后使用source命令source c:/school.sql即可。

          四、將文本數據導入到mysql數據庫中。
          1、文本數據應符合相應的格式:字段數據之間用tab鍵隔開,null值用\n來代替。
          例:取一個文件名為teacher.txt,里面內容如下:
          \n w
          \n h
          2、數據傳入命令 load data local infile "c:/teacher.txt" into table teacher;
          注意:在mysql命令窗口中,先要用use命令打開此表所在的數據庫。


          posted @ 2009-03-26 10:05 斷點 閱讀(90) | 評論 (0)

          posted @ 2010-01-14 21:40 斷點 閱讀(383) | 評論 (0)編輯 收藏

          一、常用命令
          列出數據庫:show databases;
          選擇數據庫:use databaseName;
          列出表格:show tables;
          建庫create database 庫名;
          建表create table 表名;
          顯示數據表的結構:desc 表名;
          刪庫 drop database 庫名;
          刪表 drop table 表名;
          將表中記錄清空:delete from 表名;
          顯示表中的記錄:select * from 表名;

          二、連接MYSQL。
          格式: mysql -h主機地址 -u用戶名 -p用戶密碼
          1、例1:連接到本機上的MYSQL。
          首先在打開DOS窗口,鍵入命令mysql -uroot -p,回車后提示你輸密碼。
          2、例2:連接到遠程主機上的MYSQL。假設遠程主機的IP為:192.168.1.5,用戶名為root,密碼為root。則鍵入以下命令: mysql -h192.168.1.5 -uroot -proot
          3、退出MYSQL命令: exit (回車)

          三、其它命令:
          查詢時間:select now();
          查詢數據庫版本:select version();
          查詢當前用戶:select user();
          查詢當前使用的數據庫:select database();  
          匹配字符:可以用通配符_代表任何一個字符,%代表任何字符串;
          增加一個字段:alter table tabelName add column fieldName dateType;
          增加多個字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
          修改密碼:mysqladmin -u用戶名 -p舊密碼 password新密碼

          以下轉載:

          增加新用戶:
          格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼"

          例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MYSQL,然后鍵入以下命令:
          grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
          但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那么他就可以在internet上的任何一臺電腦上登錄你的mysql數據庫并對你的數據可以為所欲為了,解決辦法見例2。

          例2、增加一個用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對數據庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數據庫所在的那臺主機),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數據庫,只能通過MYSQL主機上的web頁來訪問了。
          grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

          例3.如果你不想test2有密碼,可以再打一個命令將密碼消掉。
          grant select,insert,update,delete on mydb.* to test2@localhost identified by "";

          例4.增加一個管理員帳戶:grant all on *.* to user@localhost identified by "password";

          其它命令集:
          從已經有的表中復制表的結構create table table2 select * from table1 where 1<>1; 
          復制表create table table2 select * from table1; 
          對表重新命名alter table table1 rename as table2;
          修改列的類型:
          alter table table1 modify id int unsigned;//修改列id的類型為int unsigned
          alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned 
          創建索引:
          alter table table1 add index ind_id (id);
          create index ind_id on table1 (id);
          create unique index ind_id on table1 (id);//建立唯一性索引 
          刪除索引:
          drop index idx_id on table1;
          alter table table1 drop index ind_id; 
          聯合字符或者多個列(將列id與":"和列name和"="連接):
          select concat(id,':',name,'=') from students。  
          limit(選出10到20條)<第一個記錄集的編號是0>:
          select * from students order by id limit 9,10。  
          MySQL不支持的功能:事務,視圖,外鍵和引用完整性,存儲過程和觸發器。


          posted @ 2009-03-26 10:02 斷點 閱讀(79) | 評論 (0)

          posted @ 2010-01-14 21:38 斷點 閱讀(235) | 評論 (0)編輯 收藏

          這個問題主要是MySQL自身的配置問題,修改一下,即可解決。

          把E:\MySQL\MySQL Server 5.0里面的my.ini文件,default-character-set項修改為

          default-character-set=gbk

          注意:default-character-set兩處需要進行修改,且修改后的值一樣為gbk。

          posted @ 2009-02-12 10:23 斷點 閱讀(65) | 評論 (0)

          posted @ 2010-01-14 21:36 斷點 閱讀(193) | 評論 (0)編輯 收藏

          項目開始的時候用的是這個my97,選一下日期就能帶出來,感覺挺好,但到了后來項目上線了,有一個“保險起期”、“保險止期”聯動,發現控件上的日期需要雙擊才可聯動;如果只單擊一下“保險起期”,然后離開點頁面其他地方,兩個時間沒有聯動起來。經項目組js牛人(wuguojian)努力攻關,終于實現了點擊就可以聯動的效果。

           

          改造有兩個方面的原因:

          1.如果業務人員,只單擊了“保險起期”,而“保險止期”沒有聯動,以前的默認的保險期間365天沒有發生變化,而保單打印出來的時間“保險起期”、“保險止期”有變化,易引起麻煩。

          2.剛才提到雙擊可以聯動,還有單擊后點刷新也可以聯動,但是在網絡慢的情況下,影響出單員的效率。

          改造如下:

          對文件My97DatePicker.htm部分進行修改,增加一個js方法,在body里面引用:
          <head>
          <script>
          // 增加日歷控件關閉事件 2009-10-26
          function getObj() {
           var divs = document.body.getElementsByTagName("div");
           for (var i=0,len=divs.length;i<len;i++) {
            if (divs[i].className == 'WdateDiv') {
             divs[i].onblur = function () {
              $dp.el.onchange();
             };
             break;
            }
           }
          }
          </script>
          </head>
          <body leftmargin="0" topmargin="0" onload="$c.autoSize();getObj();">
          </body>

          控件連接地址:http://www.my97.net/dp/demo/index.htm

          posted @ 2009-10-31 18:08 斷點 閱讀(19) | 評論 (0)

          posted @ 2010-01-14 21:34 斷點 閱讀(691) | 評論 (2)編輯 收藏

          什么是正則表達式
          簡單的說,正則表達式是一種可以用于模式匹配和替換的強有力的工具。

          其作用如下:
          1、測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
          2、替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
          3、根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字。

           
          正則表達式的形式一般如下:

          /love/ 其中位于“/”定界符之間的部分就是將要在目標對象中進行匹配的模式。用戶只要把希望查找匹配對象的模式內容放入“/”定界符之間即可。為了能夠使用戶更加靈活的定制模式內容,正則表達式提供了專門的“元字符”。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
           
          1、元字符。常用的包括: “+”, “*”,以及 “?”。
          “+”元字符規定其前導字符必須在目標對象中連續出現一次或多次。
          “*”元字符規定其前導字符必須在目標對象中出現零次或連續多次。
          “?”元字符規定其前導對象必須在目標對象中連續出現零次或一次。 
          \s:用于匹配單個空格符,包括tab鍵和換行符;
          \S:用于匹配除單個空格符之外的所有字符;
          \d:用于匹配從0到9的數字;
          \w:用于匹配字母,數字或下劃線字符;
          \W:用于匹配所有與\w不匹配的字符;
          . :用于匹配除換行符之外的所有字符。
          例子:
          /fo+/ 因為上述正則表達式中包含“+”元字符,表示可以與目標對象中的 “fool”, “fo”, 或者 “football”等在字母f后面連續出現一個或多個字母o的字符串相匹配。
          /eg*/ 因為上述正則表達式中包含“*”元字符,表示可以與目標對象中的 “easy”, “ego”, 或者 “egg”等在字母e后面連續出現零個或多個字母g的字符串相匹配。
          /Wil?/ 因為上述正則表達式中包含“?”元字符,表示可以與目標對象中的 “Win”, 或者“Wilson”,等在字母i后面連續出現零個或一個字母l的字符串相匹配。
          /\s+/ 上述正則表達式可以用于匹配目標對象中的一個或多個空格字符。
          /\d000/ 如果我們手中有一份復雜的財務報表,那么我們可以通過上述正則表達式輕而易舉的查找到所有總額達千元的款項。

          2、限定符。有時候不知道要匹配多少字符。為了能適應這種不確定性,正則表達式支持限定符的概念。
          {n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
          {n,} n 是一個非負整數。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。
          {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數之間不能有空格。


          3、定位符。定位符用于規定匹配模式在目標對象中的出現位置。 包括: “^”, “$”, “\b” 以及 “\B”。
          “^”定位符規定匹配模式必須出現在目標字符串的開頭
          “$”定位符規定匹配模式必須出現在目標對象的結尾
          “\b”定位符規定匹配模式必須出現在目標字符串的開頭或結尾的兩個邊界之一
          “\B”定位符則規定匹配對象必須位于目標字符串的開頭和結尾兩個邊界之內。

          舉例:
          /^hell/ 因為上述正則表達式中包含“^”定位符,所以可以與目標對象中以 “hell”, “hello”或“hellhound”開頭的字符串相匹配。
           /ar$/ 因為上述正則表達式中包含“$”定位符,所以可以與目標對象中以 “car”, “bar”或 “ar” 結尾的字符串相匹配。
          /\bbom/ 因為上述正則表達式模式以“\b”定位符開頭,所以可以與目標對象中以 “bomb”, 或 “bom”開頭的字符串相匹配。
          /man\b/ 因為上述正則表達式模式以“\b”定位符結尾,所以可以與目標對象中以 “human”, “woman”或 “man”結尾的字符串相匹配。

          4、為了方便用戶更加靈活的設定匹配模式,正則表達式允許使用者在匹配模式中指定某一個范圍而不局限于具體字符。例如: 
          /[A-Z]/ 上述正則表達式將會與從A到Z范圍內任何一個大寫字母相匹配。
          /[a-z]/ 上述正則表達式將會與從a到z范圍內任何一個小寫字母相匹配。
          /[0-9]/ 上述正則表達式將會與從0到9范圍內任何一個數字相匹配。
          /([a-z][A-Z][0-9])+/ 上述正則表達式將會與任何由字母和數字組成的字符串,如 “aB0” 等相匹配。


          5、這里需要提醒用戶注意的一點就是可以在正則表達式中使用 “()” 把字符串組合在一起。
          6、如果我們希望在正則表達式中實現類似編程邏輯中的“或”運算,在多個不同的模式中任選一個進行匹配的話,可以使用管道符 “|”。
          例如:/to|too|2/ 上述正則表達式將會與目標對象中的 “to”, “too”, 或 “2” 相匹配。

          7、否定符 “[^]”。規定目標對象中不能存在模式中所規定的字符串。例如:/[^A-C]/ 上述字符串將會與目標對象中除A,B,和C之外的任何字符相匹配。
          8、當用戶需要在正則表達式的模式中加入元字符,可以使用轉義符“\”。例如:/Th\*/ 上述正則表達式將會與目標對象中的“Th*”而非“The”等相匹配。


          區號:前面一個0,后面跟2-3位數字 : 0\d{2,3}
          電話號碼:7-8位數字: \d{7,8}
          分機號:一般都是3位數字: \d{3,}
          這樣連接起來就是驗證電話的正則表達式了:/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/

          手機號碼前面以1開頭,第二位現在是3或者5,后面是9位數字,則:/^1[35]\d{9}$/


          posted @ 2009-08-15 19:24 斷點 閱讀(39) | 評論 (0)

          posted @ 2010-01-14 21:32 斷點 閱讀(313) | 評論 (0)編輯 收藏

          有人問 Javascript 中如何截取小數位并實現四舍五入,這是一個很常用的 js 技術,因為覺得比較典型,可能很多新手都會遇到此問題,所以將帖子整理了一下,以備新手查閱。


          1、round 方法
          作用:返回與給出的數值表達式最接近的整數。
          語法:Math.round(number) ,必選項 number 參數是要舍入到最接近整數的值。
          說明:如果 number 的小數部分大于等于 0.5,返回值是大于 number 的最小整數。否則,round 返回小于等于 number 的最大整數。

          2、在 Javascript 1.5 (IE5.5+,NS6+ 以上版本支持)中,新增了2個專門用于貨幣流通的函數,Number.toFixed(x) 和 Number.toPrecision(x)。

          Number.toFixed(x) 是將指定數字截取小數點后 x 位, Number.toPrecision(x) 是將整個數字截取指定(x)長度。注意,一個是計算小數點后的長度,一個是計算整個數字的長度 。

          例如:
          <script type="text/javascript">
           var aa = 2.3362; 
          document.write(aa.toFixed(1)); // 2.3
          document.write(aa.toFixed(2)); // 2.34 
          document.write(aa.toPrecision(2)); // 2.3
          document.write(aa.toPrecision(3)); // 2.34 
          document.write(Math.round(aa * 10) / 10); // 2.3
          document.write(Math.round(aa * 100) / 100); // 2.34 
          </script>

          由于是新增函數,所以要考慮瀏覽器支持問題。


          posted @ 2009-08-26 13:52 斷點 閱讀(157) | 評論 (0)

          posted @ 2010-01-14 21:32 斷點 閱讀(672) | 評論 (0)編輯 收藏

          數組分類:
          1、從數組的下標分為索引數組、關聯數組
          /* 索引數組,即通常情況下所說的數組 */ 
          var ary1 = [1,3,5,8];  
          //按索引去取數組元素,從0開始(當然某些語言實現從1開始),索引實際上就是序數,一個整型數字  
          alert(ary1[0]);  
          alert(ary1[1]);  
          alert(ary1[2]);  
          alert(ary1[3]);  
           
          /* 關聯數組,指以非序數類型為下標來存取的數組  python中稱為字典 */ 
          var ary2 = {};   //存取時,以非序數(數字),這里是字符串  
          ary2["one"] = 1;  
          ary2["two"] = 2;  
          ary2["thr"]  = 3;  
          ary2["fou"] = 4;
           
          2、從對數據的存儲分為靜態數組、動態數組
          /* java中的靜態數組 */ 
          Int[] ary1 = {1,3,6,9}; //定義后數組的長度固定了不能改變,按索引取數組元素  
            
          /* java中的動態數組   (java中的ArrayList實現是以Array為基礎的。)*/ 
          List<Integer> ary2 = new ArrayList<Integer>();  
          ary2.add(1);//可以動態的添加元素,數組的長度也隨著變化  
          ary2.add(3);  
          ary2.add(6);
           
          /* js的數組屬于動態數組 */ 
          var ary = [];//定義一個數組,未指定長度  
          ary[0] = 1;//可以動態的添加元素  
          ary.push(3);  
          ary.push(5);   
          alert(ary.join(","));//輸出1,3,5 

          js的數組同時屬于索引數組和動態數組,因為本質上它就是一個js對象,體現著js動態語言特性。但js的索引數組并非“連續分配”內存的,因此索引方法并不會帶來很高的效率。而java中的數組則是連續分配內存的。


          例子:
          function test(){
                  
          var oneArray=new Array();
                  oneArray[
          "first"]="firstValue";
                  oneArray[
          "second"]="secondValue";
                  
                  
                  oneDrapList
          =document.createElement("select");
                  
                  
          for(att in oneArray){
                      
          var oneOption=document.createElement("option");
                      oneOption.text
          =oneArray[att]
                      oneOption.value
          =att;
                      
          try{
                          oneDrapList.add(oneOption,
          null);
                          }

                      
          catch(ex){
                          oneDrapList.add(oneOption);
                          }

                      }

          }


          function test(){
              var obj = tool.getFilterByName("<%=dwname%>",'VehicleClass');
              if(obj){
               var cProdNo = '<%=cProdNo%>';
               if(cProdNo=="0316"||cProdNo=="0325"){
                 var array = {"摩托車類":"摩托車類","拖拉機類":"拖拉機類"};
                 for(var temp in array){
                var option = new Option(temp,array[temp]);
                obj.add(option);
                   }
              }
            }
          }

          posted @ 2009-08-14 21:28 斷點 閱讀(202) | 評論 (0)

          posted @ 2010-01-14 21:30 斷點 閱讀(542) | 評論 (0)編輯 收藏

          這幾天一直被日期的各種轉換纏繞在,現在終于解決,順便把自己這幾天的收獲貢獻出來,與大家一起共同成長。

          1、將日期字符串轉換成日期對象。
          yyyy-mm-dd這種格式的字符串轉化成日期對象,可以用new Date(Date.parse(str.replace(/-/g,"/")));
          如下:
          var endDateStr = endYear +"-"+ endMonth  +"-"+  endDay;
          endDate = new Date(Date.parse(endDateStr.replace(/-/g,"/")));
          實例顯示:
          endDateStr:"2010-5-20"
          Date.parse(endDateStr.replace(/-/g,"/")):1274284800000
          endDate:Thu May 20 00:00:00 UTC+0800 2010

          yyyy/mm/dd這種格式轉化成日期對象,可以用new Date(str);
          如下:
          var endDateStr = endYear +"/"+ endMonth  +"/"+  endDay;
          endDate = new Date(endDateStr);
          實例顯示:"2010/5/20"、Thu May 20 00:00:00 UTC+0800 2010

          yyyymmdd這種格式轉換成日期對象,可以用new Date(sDate.replace(/^(\d{4})(\d{2})(\d{2})$/,"$1/$2/$3"));
          如下:
          var sDate="20090516";
          sDate=sDate.replace(/^(\d{4})(\d{2})(\d{2})$/,"$1/$2/$3");
          new Date(sDate);
          實例顯示:"2009/05/16"、Sat May 16 00:00:00 UTC+0800 2009

          2、顯示當前日期的下一天。
          var date = new Date();
          var b = date.getDate();
          b += 1;
          date.setDate(b);

          3、求兩個日期之間相差的天數。
          var Date1 =new Date(2008,6,28);               //Mon Jul 28 00:00:00 UTC+0800 2008
          var Date2 =new Date(2009,5,16);               //Tue Jun 16 00:00:00 UTC+0800 2009
          var n  = (Date2.getTime()-Date1.getTime())/(24*60*60*1000);  //323
          var n  = (Date2-Date1)/(24*60*60*1000);   //直接相減得到的是毫秒數。

           4、dateObj.getDay() 返回 Date 對象中用本地時間表示的一周中的日期值。
          getDay 方法所返回的值是一個處于 0 到 6 之間的整數,它代表了一周中的某一天,返回值與一周中日期的對應關系如下:

          值 星期
          0 星期天
          1 星期一
          2 星期二
          3 星期三
          4 星期四
          5 星期五
          6 星期六

          此方法可以用來對 ‘工作日’的判斷。


          posted @ 2009-05-16 15:24 斷點 閱讀(87) | 評論 (0)

          posted @ 2010-01-14 21:29 斷點 閱讀(469) | 評論 (0)編輯 收藏

          僅列出標題
          共18頁: First 上一頁 9 10 11 12 13 14 15 16 17 下一頁 Last 
          主站蜘蛛池模板: 津市市| 古浪县| 夹江县| 龙海市| 平武县| 常德市| 辽阳市| 湘乡市| 澎湖县| 莱阳市| 大余县| 井陉县| 鸡东县| 当阳市| 茶陵县| 钦州市| 平邑县| 邹城市| 祁门县| 乐清市| 化隆| 买车| 龙门县| 大丰市| 左权县| 武冈市| 乾安县| 灵台县| 建瓯市| 景东| 滨州市| 永昌县| 巴林右旗| 威信县| 科尔| 乌拉特中旗| 阿尔山市| 湖州市| 金华市| 依安县| 聊城市|