文章編號: 241728 - 上次校閱: 2004年6月28日 - 版次: 3.0 PRB: 使用 IsDate 的 2 位數年份,可能會產生非預期的結果
在此頁中徵狀如果傳遞包含 2 位數年份的日期,IsDate() 函式可能會傳回非預期的結果。 發生的原因[VBA 日期函數 IsDate,格式]、 [CDate,] 和 [CVDate 利用 OLE 自動化 (OleAut32.dll) 中找到的函式。這個函式由 tokenizing 每個分隔的值代表日期字串中搜尋所有可能的日期格式,並傳回布林值,指出是否可以輸入表示為 Date。 這是使用函式來解譯包含 2 位數的年份的日期時,請記住很重要的。不同的地區設定使用各種日期格式 (也就是公釐/dd/yy、 yy/公釐/dd、"DD MMM YY"、"YY MMM DD",等等) 和函式因此嘗試所有位置中的數字,直到函式已經找到有效的日期或已用完所有的可能性。 支票 2 月 29 是正確的日期,特定年度的是否是其中一個範例傳遞 IsDate 函式包含 2 位數年份的日期時您可能其中得到非預期的結果。若要成為更特定,傳遞 IsDate 函式的稜兩可如"29-FEB-01 」 的日期、 將導致 IsDate 檢查所有可用的日期格式且會傳回 TRUE,因為 2029 2 月 1,是正確的日期。不過,時為"29-Feb-2001",然後 IsDate 傳入完整格式的年份可以判斷這是日期無效,因此將 FALSE 傳回。 解決方案建立包裝函式的函式周圍 IsDate 函式,若要將日期轉換成 4 位數的年份,然後再將轉換後的日期傳遞至 IsDate() 函式。 狀況說明這種行為是經過設計規劃的。 其他相關資訊中 OleAut32.dll 函式使用"滑動年 」 的標準讓,預設情況下,所有的 2 位數年份,在範圍 0-29 視為處於 2000s年,且在 30-99 範圍內的位於 1900s年。這可以輕易地被覆與下列包裝函式函式。 文件,以 IsDate 函式定義它的設計是行為。 IsDate(expression) 必要的 運算式 是 Variant,包含日期運算式或字串運算式可辨識為日期或時間。 重製行為的步驟
要避免這個問題的步驟
這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:241728?
(http://support.microsoft.com/kb/241728/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
