Försöker skriva ut en array och få efterföljande datum som är lika som föregående att endast skriva ut tid.
Ser ut från början:
2004-09-25 14:00
2004-09-25 14:00
2004-09-25 14:30
2004-09-26 14:00
2004-09-26 17:00
2004-09-26 17:30
Vill att det skall se ut:
2004-09-25 14:00
14:00
14:30
2004-09-26 14:00
17:00
17:30
Har löst det med denna kod, men vet inte om jag skall skratta eller gråta. Tycker det blir lite spagetti av det hela, om någon vet hur man kan skriva detta på ett bättre sätt så välkomnas synpunkter med öppna armar.
dat = Left(strDatum, 10)
If dat = Left(strDatum, 10) AND NOT dat2 = "1" Then
strDatum = Left(strDatum, 16)
DateOld = Left(strDatum, 10)
dat2 = "1"
else
if DateOld = dat Then
dat2 = "1"
strDatum = Right(Left(strDatum, 16), 5)
else
dat2= "1"
DateOld = Left(strDatum, 10)
strDatum = Left(strDatum, 16)
End if
End if
dat = Left(strDatum, 10)
If dat = Left(strDatum, 10) AND i = 0 Then
strDatum = Left(strDatum, 16)
DateOld = Left(strDatum, 10)
else
if DateOld = dat Then
strDatum = Right(Left(strDatum, 16), 5)
else
strDatum = Left(strDatum, 16)
DateOld = Left(strDatum, 10)
End if
End if
Ok. Jag antar att arrayen är skapad från ett recordset annars undrar jag varför du har två (eller fler?) dimensioner).
oldDate = ""
for i = 0 to ubound( arrRecords, 2 )
if( oldDate <> left( arrRecords( 1, i ), 10 ) ) then
response.write left( arrRecords( 1, i ), 10 ) & "<br>"
end if
response.write right( arrRecords( 1, i ), 5 ) & "<br>"
oldDate = left( arrRecords( 1, i ), 10 )
next
Eller om du vill ha som du frågade efter. Jag tycker själv att det blir tydligare som ovan.
oldDate = ""
for i = 0 to ubound( arrRecords, 2 )
if( oldDate <> left( arrRecords( 1, i ), 10 ) ) then
response.write arrRecords( 1, i ) & "<br>"
else
response.write right( arrRecords( 1, i ), 5 ) & "<br>"
end if
oldDate = left( arrRecords( 1, i ), 10 )
next
Sen ska man aldrig använda strängfunktioner som left() och right() för att skriva ut delar av datum. Använd de datumfunktioner som finns att tillgå i VBScript!
Vad händer om datumformatet av någon anledning ändras?
Sen ska man aldrig använda strängfunktioner som left() och right() för att skriva ut delar av datum. Använd de datumfunktioner som finns att tillgå i VBScript!
Vad händer om datumformatet av någon anledning ändras?
Det har du ju alldeles rätt i.
Den där snabeln är då en petig rackare... ;)
strOldDate = ""
for i = 0 to ubound( arrRecords, 2 )
strDate = formatdatetime( arrRecords( 1, i ), 2 )
strTime = formatdatetime( arrRecords( 1, i ), 4 )
if( strOldDate <> strCurrentDate ) then
response.write strDate & "<br>"
end if
response.write strTime & "<br>"
strOldDate = strDate
next
Tack till Er båda, har tyvärr inte hunnit sätta mig in i koden. Och hinner tyvärr inte göra det före den 22:e, skall iväg till Prag och försöka behärska Herr Snabels favorit hobby ;)