webForumDet fria alternativet

Datum/tid beroende på föregående array.

ASP

9 svar · 462 visningar · startad av SannyW

Medlem sedan jan. 2003438 inlägg
Frågan#1

Tja!

Hoppas någon har tid och lust att slå en blick.

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
Medlem sedan jan. 2003438 inlägg
#2

Har putsat lite....

	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
Medlem sedan dec. 20003 887 inlägg
#3

Detta kan säkert fungera:

Felaktig kod raderad

red.
Det fungerar nog inte alls förresten...

Medlem sedan dec. 20003 887 inlägg
#4

I min iver glömde jag kolla på din kod lite noggrannare.

Vilken array försöker du skriva ut?

Medlem sedan dec. 20003 887 inlägg
#5

Jag kan lika gärna ge mig på ett försök till...

strTimes = join( [i]dinArray[/i], ":" )
strTimes = replace( strTimes, " ", ":" )

arrTimes = split( strTimes, ":" )
oldDate = ""

for i = 0 to ubound( arrTimes ) step 2
  if( oldDate <> arrTimes( i ) then
    response.write arrTimes( i ) & "<br>"
  end if

  response.write arrTimes( i + 1 ) & "<br>"

  oldDate = arrTimes( i )
next
Medlem sedan jan. 2003438 inlägg
#6

Tack för dina svar Engine^

Vad jag menade med array, är att strDatum kommer från:

For i = 0 To Ubound(arrRecords,2)

	strDatum = arrRecords(1,i)	

......koden ovan

Next

Skall kolla och testa lite med det du skrev, tack än en gång.

Medlem sedan dec. 20003 887 inlägg
#7

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
Medlem sedan juni 200032 967 inlägg
#8

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?

Medlem sedan dec. 20003 887 inlägg
#9

@nders skrev:

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
Medlem sedan jan. 2003438 inlägg
#10

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 ;)

(...något som kan förknippas med sommaren)
http://www.dileno.com/default.aspx?CatId=3&ArtId=11

Tack igen, återkommer med kod och synpunkter då jag kommer tillbaka.

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)