比较日期标记值

时间:2014-07-01 20:00:50

标签: xml vbscript

我有一个脚本可以对信息进行排序,然后它必须根据匹配日期做出决定,问题是我不知道如何告诉脚本哪个是最新的游戏,这里是XML文件:

<Games>
  <Game>
    <Date>Sunday, June 29</Date>
    <Time>8:05 PM</Time>
    <Away>Boston</Away>
    <ScoreAway>8</ScoreAway>
    <Home>NY Yankees</Home>
    <ScoreHome>5</ScoreHome>
    <Status>Final</Status>
    <Result>Won</Result>
  </Game>
  <Game>
    <Date>Monday, June 30</Date>
    <Time>7:10 PM</Time>
    <Away>Chicago Cubs</Away>
    <ScoreAway>2</ScoreAway>
    <Home>Boston</Home>
    <ScoreHome>0</ScoreHome>
    <Status>Final</Status>
    <Result>Lost</Result>
  </Game>
</Games>

现在,我知道如何从节点中检索信息,但我不知道如何比较它们或如何告诉脚本什么比另一个更新。

1 个答案:

答案 0 :(得分:1)

原则上,您可以使用CDateDateValue功能将日期和时间字符串转换为日期/时间值。

WScript.Echo CDate(node.text)

但是,虽然这适用于<Time>节点的值,但<Date>节点使用该功能无法识别的自定义格式。最好的方法是将这些节点中使用的格式更改为可识别的格式,例如:

  • Jun 29, 2014
  • 2014-06-29
  • 6/29/2014

如果这不可能,您需要自己解析字符串,即Split字符串,然后从其部分构建日期值:

Set monthNames = CreateObject("Scripting.Dictionary")
For i = 1 To 12
  monthNames.Add MonthName(i), i
Next

d = Split(node.text)
WScript.Echo DateSerial(Year(Date), monthNames(d(1)), CInt(d(2)))

请注意,我在此假设您每次运行脚本时都会查看当前年份。如果情况并非如此,则需要使用更合适的内容替换Year(Date)