2000 年的準備 Visual Basic 應用程式的方式

文章翻譯 文章翻譯
文章編號: 162718 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

結論

身為開發人員可能會擔心您的應用程式將如何處理超過 12/31/1999年的日期。上 1 月 1st 2000 年的將您的程式認為它是 2000年、 1900 或甚至 1980 年??本文的目標是要確保應用程式將正常行為超過 12/31/1999年的日期與您 Visual Basic。

其他相關資訊

雖然所有版本的 Visual Basic 將都處理大於 (以四位數格式) 1999 年,傳遞 (例如,7/3/45) 日期中的兩位數年份強制 Visual Basic,假設該日期會對應到何種世紀。或許最佳解釋這種行為的方法是提供快速的 Visual Basic 歷史課。

Visual Basic 歷程記錄課程

所有版本的 Visual Basic 的 Windows,(包括其前置任務,例如 Visual Basic DOS 和 QuickBasic) 之前,且包含 3.0,二位數西元年已一律假設為 1900s年中。程式碼來實作此預設值插入每個版本執行階段程式庫而建立,且不會根據作業系統的版本或目前的系統日期的世紀。

一種開發週期的 Visual Basic 3.0 與 4.0,之間兩個新實體出現: Visual Basic 應用程式及 OLE 自動化。之前,這些技術的問世,Visual Basic 執行階段程式庫包含負責兩位數年份轉為四位數年份的程式碼。OLE 自動化公開許多其他應用程式可以存取的功能。Visual Basic 應用程式並不需要實作這段程式碼; 它可能反而請 OLE 自動化程式庫的呼叫。

Visual Basic 4.0 記住這個交互操作性與開發,並依賴 OLE 自動化程式庫轉換兩位數年份為四位數西元年,在大多數情況下開始。規則的例外狀況是 DateSerial 函數已在 Visual Basic 執行階段程式庫中實作,因為 Visual Basic 所需更多的功能比 OLE 自動化程式庫可以提供在該時間。

在 Visual Basic 4.0 開發週期 Microsoft 會決定在舊版的 Visual Basic 中使用的預設值不可靠,但不是一定可行。所以,新規則一種出現。兩位數年份會被轉換成目前系統日期的世紀。因此,Year(Date("1/1/00")) 會評估為目前紀元。這個新的規則是在 Visual Basic 4.0 和 Visual Basic 所使用的應用程式的 OLE 自動化程式庫而實作。Visual Basic 4.0 執行階段程式庫也會實作規則的 DateSerial 函數。

Microsoft 稍後 reconsidered 及變更預設值在 OLE 自動化 (現在只是自動化) 作為 OleAut32.dll 2.20.4049 版本的程式庫。 這項變更不會影響依賴自動化程式庫僅 32 位元應用程式的 16 位元應用程式。現在,將 00 和 29 (例如 17) 之間的兩位數年份解譯為 2017年,而介於 30 到 99 (例如 72) 的兩位數年份解譯為 1972年。新的自動化程式庫提供 Visual Basic 需要 DateSerial 函數的功能。因此,Visual Basic 5.0 及後續的版本不會再實作這個函式的規則及其執行階段程式庫中。

已更新的自動化程式庫隨附於 Internet Explorer 3.0 版和之後的版本、 Windows NT 3.51 服務封包 5、 Windows NT 4.0、 Windows 95 OSR 2、 Office 97、 Visual Basic 5.0 及其他產品。

會有什麼效果所有此平均值的開發人員使用 Visual Basic?

Visual Basic 3.0 和先前版本將所有的二位數西元年轉換為 1900s年。

Visual Basic 4.0 (16 位元) 會將所有的兩位數年份轉換為目前系統日期的世紀。使用此函式而定 Visual Basic 將轉換 16 位元自動化程式庫] 或 [執行階段程式庫的預設值為基礎的日期。16 位元自動化程式庫中的預設值尚未經過改寫以來 Visual Basic 4.0 發行因此行為是一致的不論使用哪一個日期函式。

Visual Basic 4.0 (32 位元) 會將兩位數年份來自動化程式庫,除了時使用 DateSerial 函數,將所有的二位數西元年轉換為目前系統日期的世紀中預設值為基礎的四位數西元年。出貨發行 Visual Basic 4.0 時在 32 位元自動化程式庫 (OleAut32.dll 版本 2.10) 目前系統日期的世紀轉換所有的兩位數年份。如果兩位數年份 30 到 99 之間,稍後 32 位元自動化程式庫 (OleAut32.dll 2.20 和之後的版本) 將轉換成 1900s年兩位數年份。如果兩位數年份 00 和 29 之間,日期會被轉換至 2000s年。

Visual Basic 版本之後,4.0,轉換兩位數年份來自動化程式庫的所有日期函式中的預設值為基礎的四位數西元年。Visual Basic 5.0 隨附版本 2.20.4054 兩位年數轉換為 1900s年,如果兩位數年份 30 到 99 之間。如果兩位數年份 00 和 29 之間,日期會被轉換至 2000s年。

那如果我不喜歡這些預設值嗎?

若要使用規則的設定來代替依賴原生 Visual Basic 來預設值。比方說您可以輸入只有兩位數年份,並有 00 到 49 對應到西元 2000年到 2049年且具有 50 到 99,對應到 1950年到 1999 年。

接受來自使用者的日期字串時, 測試判斷數字位數年份的輸入字串的格式。根據此範例應用程式規則,1/11/45 為在年份 2045,而不是在 1945 年。應用程式碼,內變更字串使用適當的四位數年份,然後將使用四位數年份的日期字串轉換成日期變數。

範例程式碼

下列程式碼會評估名為 txtDate,當您按一下 cmdConvertDate 在文字方塊中輸入資料。如果在日期中包含兩位數年份會將這個日期轉換成四位數年份日期根據規則範例。 然後程式碼會顯示的初始輸入完整的年份為根據到規則範例程式碼所轉換的日期,而完整的年份轉換至 Visual Basic 原生預設值]。最後,txtDate 中顯示的日期會轉換成非稜兩可的日期,以適當的四位數年份。

一旦您已經開發程式碼來處理您自己的規則為兩位數年份解譯,您可以在 32 位元自訂控制項具有 [控制項建立版的 Visual Basic 建置該程式碼。如需這項產品,以及建置的詳細資訊您自己的自訂控制項,請參閱 Microsoft Visual Basic 網站,在:

http://www.microsoft.com/vbasic

這個程式碼需要以公釐/dd/yy] 格式輸入日期,但它可以輕易地變更為處理不同的日期格式:

   Private Sub cmdConvertDate_Click()
       Dim strYear As String
       Dim intSlash As Integer
       If IsDate(txtDate) or txtDate = "2/29/00" Then
           'Find first date separator.
           intSlash = InStr(txtDate, "/")
           If intSlash > 0 Then
               'Find second date separator.
               intSlash = InStr(intSlash + 1, txtDate, "/")
               If intSlash > 0 Then
                   'Extract the year from the date.
                   strYear = Mid(txtDate, intSlash + 1)
                   If Len(strYear) = 2 Then
                       If CInt(strYear) < 50 Then
                       ' Less than 50: year = 20XX.
                           strYear = "20" & strYear
                       Else
                       ' Greater than 50: year = 19XX.
                           strYear = "19" & strYear
                       End If
                   End If
                   MsgBox "Date Entered: " & txtDate
                   MsgBox "Year (Our Rule): " & strYear
                   MsgBox "Year (VB Default): " & Year(txtDate)
               Else
                   MsgBox "Date not in expected format!"
               End If
           Else
               MsgBox "Date not in expected format!"
           End If
       Else
           MsgBox "Not a valid date!"
       End If
       '  Clarify date in txtDate.
       txtDate.Text = Left(txtDate.Text, intSlash) & strYear
   End Sub
				

?考

Microsoft Visual Basic 說明檔案 ; 在上搜尋: 日期和 Variant 資料型別 ; IsDate 函式 ; CDate 和 CVDate 函式 ;

(c) Microsoft Corporation 1997,保留所有的權限。 David Sceppa,Microsoft 公司所佔的比重

屬性

文章編號: 162718 - 上次校閱: 2014年2月22日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
關鍵字:?
kbnosurvey kbarchive kbmt kbhowto KB162718 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:162718
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com