Asp classic 组合两个字符串并按日期/时间排序

Asp classic 组合两个字符串并按日期/时间排序,asp-classic,vbscript,Asp Classic,Vbscript,我想看看是否有可能合并两个字符串并按日期/时间排序 dim strcountstf dim strDateNTimes dim strCOMBO strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###" strDateNTimes = "02/01/2012 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###" strCOMBO = strco

我想看看是否有可能合并两个字符串并按日期/时间排序

dim strcountstf
dim strDateNTimes
dim strCOMBO
strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###"
strDateNTimes = "02/01/2012 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###"

strCOMBO = strcountstf & strDateNTimes
现在strCOMBO会将这两个字符串一起提供给我,但我需要它们按日期/时间排序,可能使用CDate函数

再次感谢大家我真的很感谢你们给我的所有帮助。

看看并利用它,你可以做这样的事情

dim strcountstf
dim strDateNTimes
dim strCOMBO
dim arrCOMBO
dim strCOMBOSorted
dim objSortedList
dim i

strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###"
strDateNTimes = "03/01/2011 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###"

strCOMBO = strcountstf & "," & strDateNTimes

arrCombo = Split(strCOMBO, ",")

Set objSortedList = Server.CreateObject("System.Collections.SortedList")

For i = LBound(arrCombo) To UBound(arrCombo)
    Call objSortedList.Add(CDate(Replace(arrCombo(i), "###", "")), arrCombo(i))
Next

strCOMBOSorted = ""

For i = 0 To objSortedList.Count - 1
    strCOMBOSorted = strCOMBOSorted & ", " & objSortedList.GetByIndex(i)
Next

strCOMBOSorted = Right(strCOMBOSorted, Len(strCOMBOSorted) - 2)

Set objSortedList = Nothing

Response.Write("<br>")
Response.Write(strCOMBO)
Response.Write("<br>")
Response.Write(strCOMBOSorted)
请注意,如果要按日期排序,您必须确保可以使用CDate函数解析字符串并生成有效的日期,或者在调用Call objSortedList.AddCDateReplacearrComboi,,arrComboi,即第一个参数键必须是有效的日期。

查看并使用它,你可以这样做

dim strcountstf
dim strDateNTimes
dim strCOMBO
dim arrCOMBO
dim strCOMBOSorted
dim objSortedList
dim i

strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###"
strDateNTimes = "03/01/2011 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###"

strCOMBO = strcountstf & "," & strDateNTimes

arrCombo = Split(strCOMBO, ",")

Set objSortedList = Server.CreateObject("System.Collections.SortedList")

For i = LBound(arrCombo) To UBound(arrCombo)
    Call objSortedList.Add(CDate(Replace(arrCombo(i), "###", "")), arrCombo(i))
Next

strCOMBOSorted = ""

For i = 0 To objSortedList.Count - 1
    strCOMBOSorted = strCOMBOSorted & ", " & objSortedList.GetByIndex(i)
Next

strCOMBOSorted = Right(strCOMBOSorted, Len(strCOMBOSorted) - 2)

Set objSortedList = Nothing

Response.Write("<br>")
Response.Write(strCOMBO)
Response.Write("<br>")
Response.Write(strCOMBOSorted)
请注意,如果要按日期排序,您必须确保可以使用CDate函数解析字符串并生成有效的日期,或者在调用Call objSortedList.AddCDateReplacearrComboi,,arrComboi时执行任何必须执行的操作,即第一个参数键必须是有效的日期。

仅限我的版本

  Option Explicit 

  Dim strcountstf, strDateNTimes, strCOMBO, strArr, ans, a, j, temp


  strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###"
  strDateNTimes = "02/01/2012 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###"

  strCOMBO = strcountstf &","& strDateNTimes


  strArr = Split(strCOMBO,",")


  for a = UBound(strArr) - 1 To 0 Step -1
      for j= 0 to a
         if strArr(j)>strArr(j+1) then
            temp=strArr(j+1)
            strArr(j+1)=strArr(j)
            strArr(j)=temp
        end if
    next
 next

For a =0 to UBound(strArr)
   ans= ans &","& strArr(a)
Next
ans= Right(ans,Len(ans)-1)
MsgBox ans
只是我的版本

  Option Explicit 

  Dim strcountstf, strDateNTimes, strCOMBO, strArr, ans, a, j, temp


  strcountstf = "02/01/2012 3:05am###,02/02/2012 7:05am###,02/05/2012 8:30pm###"
  strDateNTimes = "02/01/2012 2:20am###,02/02/2012 8:00am###,02/06/2012 6:45pm###"

  strCOMBO = strcountstf &","& strDateNTimes


  strArr = Split(strCOMBO,",")


  for a = UBound(strArr) - 1 To 0 Step -1
      for j= 0 to a
         if strArr(j)>strArr(j+1) then
            temp=strArr(j+1)
            strArr(j+1)=strArr(j)
            strArr(j)=temp
        end if
    next
 next

For a =0 to UBound(strArr)
   ans= ans &","& strArr(a)
Next
ans= Right(ans,Len(ans)-1)
MsgBox ans


如果您将日期设置为UTC格式,您只需按ASCII顺序对其进行排序,这就遗漏了一些内容。strCOMBO只是一个连接的字符串。我们如何对一个连接的字符串进行排序?你在喂这些东西吗?它们是否需要用逗号拆分、连接然后排序?是否希望先对strcountstf和strDatesNTimes进行排序,然后将其连接起来?请提供更多信息。@mastashake57 strcountstf和strdatetimes都是数组,一个来自ms access数据库,另一个来自sql数据库。当我查询/打开/调用表时,我可以并且将要订购它们。现在我得到了两个字符串,我想组合它们,然后按日期/时间排序,所以有点像连接stringA和stringB,然后按日期/时间排序。我希望这更有意义,谢谢你提出的问题。我希望我说得更清楚。这与你昨天的问题有关吗?您是否尝试在Access中创建一个视图来合并结果?如果您以UTC格式输入日期,您只需按ASCII顺序对其进行排序,这会遗漏一些内容。strCOMBO只是一个连接的字符串。我们如何对一个连接的字符串进行排序?你在喂这些东西吗?它们是否需要用逗号拆分、连接然后排序?是否希望先对strcountstf和strDatesNTimes进行排序,然后将其连接起来?请提供更多信息。@mastashake57 strcountstf和strdatetimes都是数组,一个来自ms access数据库,另一个来自sql数据库。当我查询/打开/调用表时,我可以并且将要订购它们。现在我得到了两个字符串,我想组合它们,然后按日期/时间排序,所以有点像连接stringA和stringB,然后按日期/时间排序。我希望这更有意义,谢谢你提出的问题。我希望我说得更清楚。这与你昨天的问题有关吗?你有没有尝试在Access中创建一个视图来合并你的结果?我认为你的思路是对的,我只是无法让它正确排序,你能再检查一遍吗?@Diodeus但我如何合并它们,然后在它们合并后再对它们进行排序?@compcobalt:对我来说似乎很好。您的脚本将运行什么语言环境?您的日期格式将对区域设置敏感。@AnthonyWJones为您返回的第一个日期是什么?是2011年1月3日凌晨2:20吗?除了第一次约会,一切正常吗?注:本月为第三个月03@compcobalt,我使用en-US语言环境更新了注释。你必须确保钥匙是一个有效的日期。我想你是在正确的轨道上。我只是无法让它正确排序,你能再检查一遍吗?@Diodeus但我怎样才能将它们合并,然后在它们合并后再进行排序?@compcobalt:对我来说似乎很好。您的脚本将运行什么语言环境?您的日期格式将对区域设置敏感。@AnthonyWJones为您返回的第一个日期是什么?是2011年1月3日凌晨2:20吗?除了第一次约会,一切正常吗?注:本月为第三个月03@compcobalt,我使用en-US语言环境更新了注释。您必须确保键是一个有效的日期。这确实适用于给定的字符串数据,但这只是因为在这种情况下,单个字符串将与它们所表示的日期进行>比较。但是,如果其中一个字符串是2012年2月2日下午2:00,则该字符串将失败,因为从词汇上讲,该字符串将出现在2012年2月2日上午8:00之前,但作为日期类型,它将出现在后面。同一问题的第2部分对给定的字符串数据有效,但这只是因为在这种情况下,单个字符串将与>进行比较,与它们所代表的日期。但是,如果其中一个字符串是2012年2月2日下午2:00,则 将失败,因为从词汇上讲,该字符串将出现在2012年2月2日上午8:00之前,但作为日期类型,它将出现在后面。同一问题的第2部分