webForumDet fria alternativet

Göra om ett datum till datetime

ASP

3 svar · 220 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Jag har ett datum sparat i databasen som tex kan se ut så här:

Söndagen den 5 januari kl 02:34

Denna rad vill jag göra om till formatet:

2003-01-05 02:34:00

Anledningen till att jag vill göra om datumen är för att för ett år sedan sparade jag datumen som en textsträng som exemplet ovan. Vet inte varför jag inte sparade det som datetime :l
Men nu tänkte jag ändra strukturen i databasen så det är lika bra att göra om datumen till datetime.

Hur kan man göra en funktion på enklast sätt som gör om alla datumen?

OBS!
Om datumsträngen innehåller en månad innan januari ska året bli 2002!

Det tidigaste datumet är april 2002.

Medlem sedan jan. 20032 285 inlägg
#2

Detta kan funka, men jag har inte kunnat testa det, det är något fel på webhotellet där jag har mina filer...

<%
strDate = "Söndagen den 5 januari kl 02:34"
arrDate = Split(strDate," ")

Select Case arrDate(3)
Case "januari"
  intMonth = "01"
Case "februari"
  intMonth = "02"
Case "mars"
  intMonth = "03"
Case "april"
  intMonth = "04"
Case "maj"
  intMonth = "05"
Case "juni"
  intMonth = "06"
Case "juli"
  intMonth = "07"
Case "augusti"
  intMonth = "08"
Case "september"
  intMonth = "09"
Case "oktober"
  intMonth = 10
Case "november"
  intMonth = 11
Case "december"
  intMonth = 12
Case Else
  intMonth = 00
End Select

Select Case intMonth
Case 1
  intAr = 2003
Case 4 
  intAr = 2002
Case 5
  intAr = 2002
Case 6
  intAr = 2002
Case 7
  intAr = 2002
Case 8
  intAr = 2002
Case 9
  intAr = 2002
Case 10
  intAr = 2002
Case 11
  intAr = 2002
Case 12
  intAr = 2002
Case Else
  intAr = 00
End Select

If Len(arrDate(2)) = 1 Then
Response.Write(intAr & "-" & intMonth & "-0" & arrDate(2) & " " & arrDate(5) & ":00")
Else
Response.Write(intAr & "-" & intMonth & "-" & arrDate(2) & " " & arrDate(5) & ":00")
End If
%>

Kanske inte den lättaste lösningen, @nders eller LarsG kommer säkert med nån lättare nu ;)

OBS! Har redigerat ganska mycket i koden för er som kanske har läst denna innan jag han göra det :)
Angånende att intMonth kan bli en string ibland är för att den ska kunna innehålla 0:an ibörjan, annars hoppas 0:an över :(

Medlem sedan dec. 19998 577 inlägg
#3

Det går ju att lösa det på många sätt, jag skulle nog gjort såhär:

<%
function iif(blnExp, strE1, strE2)
  if blnExp then iif = strE1 else iif = strE2
end function

session.lcid = 1053
strDate = "Söndagen den 5 januari kl 02:34"
arrDate = Split(strDate," ")

for i = 1 to 12
  if arrDate(3) = monthname(i) then
    varMonth = i
    exit for
  end if
next

if varMonth => 1 and varMonth =< 3 then intYear = 2003 else intYear = 2002

Response.Write(intYear & "-" &_
  iif(len(varMonth)=1, "0" & varMonth,varMonth) & "-" &_
  iif(len(arrDate(2))=1,"0" & arrDate(2),arrDate(2)) & " " &_
  arrDate(5) & ":00")
%>

Mvh, Vide

Medlem sedan feb. 20011 498 inlägg
#4

Man tackar för svaren. :bire

267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)