从斜线之间的日期中提取文本

时间:2018-07-31 16:09:11

标签: date vbscript format

我正在尝试将日期格式从短日期格式(例如2018年7月31日)重新设置为此自定义格式MMDDYY。因此,如果日期是2018年7月31日,我希望将其设置为073118。

我真的不知道该怎么做。下面的代码使我可以提取第一个斜杠左侧的前两位数字。但是我不确定如何提取其余部分以及如何使用两个斜杠解决提取问题。有人可以引导我朝着正确的方向完成这项工作吗?

If InStr(strRDate, "/") > 0 Then
    strRDateL = Left(strRDate, InStr(strRDate, "/")-1)
    If Len(strRDateL)=2 Then
        subMoveCursor 11, 10
        subEnterData strRDateL
    End If
End If

4 个答案:

答案 0 :(得分:1)

问题不是日期格式之一,而是字符串操作之一。您有一个字符串,它以特定格式表示日期;该任务是删除一些不需要的字符:

  Dim aT : aT = Split("07/31/2018,073118 01/01/0001,010101")
  Dim sP, aP, sL, sExp, sAct
  For Each sP in aT ' get pair
      aP = Split(sP, ",") ' split into long anf short parts
      sL = aP(0)
      sExp = aP(1)
      sAct = Left(sL, 2) & Mid(sL, 4, 2) & Right(sL, 2)
      WScript.Echo sL, sAct, CStr(sAct = sExp) 
  Next

输出:

cscript 51617746.vbs
07/31/2018 073118 Wahr
01/01/0001 010101 Wahr

答案 1 :(得分:0)

您需要为字符串函数编写自己的日期。

最简单的方法可能是使用IsDate()函数来查看您的字符串是否被识别为日期。然后,您可以使用Date函数将其强制转换为CDate()对象。

然后,您可以使用其他内置的日期函数来获取日期的MonthDayYear部分。

strDate = "07/31/2018"

WScript.Echo FormatDate(strDate)
WScript.Echo FormatDateString(strDate)

Function FormatDate(strDate)
    If IsDate(strDate) Then 
        dtmDate = CDate(strDate)
        return = Right("0" & Month(dtmDate),2) & Right("0" & Day(dtmDate),2) &  Right(Year(dtmDate),2)
    Else
        return = strDate
    End If 
    FormatDate = return
End Function 

如果您不想这样做,另一个选择是直接格式化传入的字符串。这将要求您确定输入字符串将始终采用相同的格式。

Function FormatDateString(strDate)
    'Add more error checking?
    FormatDateString = Split(strDate,"/")(0) & Split(strDate,"/")(1) & Right(strDate,2)
End Function 
例如,

7-31-2018FormatDateString中失败,但是在FormatDate中成功。

答案 2 :(得分:0)

如果您可以完全确定显示的格式(因为它是日期,所以几乎永远不会,但是仍然),只需将其视为字符串并执行类似的操作即可:

model.fit(train_vectors,train_features,validation_data=(test_vectors,test_features))

这不会检查传递的值是否实际上是日期,但这是我无需借助shuffle=True即可想到的最短方法。

答案 3 :(得分:0)

这就是我的工作方式。

If InStr(strRDate, "/") > 0 Then
    strRDateSplit = Split(strRDate, "/")
    subMoveCursor 11, 10
    subEnterData strRDateSplit(0) & strRDateSplit(1) & Right(strRDateSplit(2),2)
Else
    subMoveCursor 11, 10
    subEnterData rw.Cells(3).Value
End If