Board logo

標題: vb 如何將107年01月16日此種文字格式轉換為日期格式 ? [打印本頁]

作者: t8899    時間: 2018-1-17 07:57     標題: vb 如何將107年01月16日此種文字格式轉換為日期格式 ?

vb 如何將107年01月16日此種文字格式轉換為日期格式 ?
目的==>判斷日期的大小
作者: Hsieh    時間: 2018-1-17 09:21

回復 1# t8899
  1. Sub ex()
  2. dstr = "107年01月16日"
  3. d = Replace(Replace(Replace(dstr, "年", "/"), "月", "/"), "日", "")
  4. a = Split(d, "/")
  5. a(0) = a(0) + 1911
  6. MsgBox Join(a, "/")
  7. End Sub
複製代碼

作者: t8899    時間: 2018-1-17 09:45

回復  t8899
Hsieh 發表於 2018-1-17 09:21


抱歉,107年01月16日 是變數 像 108年02月09日
作者: Joforn    時間: 2018-1-17 10:34

回復 1# t8899
我猜另一個論壇裡的也是你吧,算了這裡再粘貼一次:
  1. Function MDate2Date(ByVal strDate As String, ByRef RefDate As Date) As Boolean
  2.   Dim MatChes As Object
  3.   Dim I  As Long, K As Long
  4.   Dim strTemp As String
  5.   Dim Date1 As Date
  6.   
  7.   On Error GoTo MDate1DateError
  8.   RefDate = Date1
  9.   Date1 = #1/1/1912#
  10.   With CreateObject("VBScript.RegExp")
  11.     .Global = True
  12.     .Pattern = "\d+[\\/年\-]\s*\b((0{0,1}[1-9])|(1[0-2]))[\\/\-月]\s*\b((0{0,1}[1-9])|([12]\d)|(3[0-1]))(日|\b)"
  13.     Set MatChes = .Execute(strDate)
  14.     If MatChes.Count Then
  15.       strDate = MatChes.Item(0)
  16.     Else
  17.       Exit Function
  18.     End If
  19.     .Pattern = "\d+"
  20.     Set MatChes = .Execute(strDate)
  21.     For I = 1 To 3
  22.       K = Val(MatChes.Item(I - 1))
  23.       Date1 = DateAdd(Choose(I, "yyyy", "m", "d"), K - 1, Date1)
  24.     Next I
  25.     MDate2Date = Day(Date1) = K
  26.     If MDate2Date Then RefDate = Date1
  27.   End With
  28. MDate1DateError:
  29. End Function
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)