Hej,
Om jag har ett datum format som ser ut så här:
19:32:10 Mar 22, 2005 PST
Hur kan man formatera det till:
3/22/2005 7:32:10 PM
Mvh
Jimpa
7 svar · 395 visningar · startad av jimpa
Hej,
Om jag har ett datum format som ser ut så här:
19:32:10 Mar 22, 2005 PST
Hur kan man formatera det till:
3/22/2005 7:32:10 PM
Mvh
Jimpa
Jag har löst det så här =)
Känns ju som att det borde finnas något smidigare sätt?
Dim strDate
strDate = "19:32:10 Mar 22, 2005 PST" '19:32:10 Mar 22, 2005 PST
strDate = Replace(strDate, ",", "") '19:32:10 Mar 22 2005 PST
strDate = Replace(strDate, ":", "|") '19|32|10 Mar 22 2005 PST
strDate = Replace(strDate, " ", "|") '19|32|10|Mar|22|2005|PST
Dim myArr
myArr = Split(strDate, "|")
Dim myHour
myHour = myArr(0)
Dim AMorPM
AMorPM = ""
If myHour = "00" Then
AMorPM = "AM"
End If
myHour = Replace(myHour, "00", "12")
myHour = Replace(myHour, "01", "1")
myHour = Replace(myHour, "02", "2")
myHour = Replace(myHour, "03", "3")
myHour = Replace(myHour, "04", "4")
myHour = Replace(myHour, "05", "5")
myHour = Replace(myHour, "06", "6")
myHour = Replace(myHour, "07", "7")
myHour = Replace(myHour, "08", "8")
myHour = Replace(myHour, "09", "9")
IF AMorPM = "" THEN
If Len(myHour) = Clng(2) Then
AMorPM = "PM"
Else
AMorPM = "AM"
End If
END IF
'myHour = Replace(myHour, "10", "10")
'myHour = Replace(myHour, "11", "11")
'myHour = Replace(myHour, "12", "12")
myHour = Replace(myHour, "13", "1")
myHour = Replace(myHour, "14", "2")
myHour = Replace(myHour, "15", "3")
myHour = Replace(myHour, "16", "4")
myHour = Replace(myHour, "17", "5")
myHour = Replace(myHour, "18", "6")
myHour = Replace(myHour, "19", "7")
myHour = Replace(myHour, "20", "8")
myHour = Replace(myHour, "21", "9")
myHour = Replace(myHour, "22", "10")
myHour = Replace(myHour, "23", "11")
Dim myMinute
myMinute = myArr(1)
Dim mySecond
mySecond = myArr(2)
Dim myMonth
myMonth = myArr(3)
myMonth = Replace(myMonth, "Jan", "1")
myMonth = Replace(myMonth, "Feb", "2")
myMonth = Replace(myMonth, "Mar", "3")
myMonth = Replace(myMonth, "Apr", "4")
myMonth = Replace(myMonth, "May", "5")
myMonth = Replace(myMonth, "Jun", "6")
myMonth = Replace(myMonth, "Jul", "7")
myMonth = Replace(myMonth, "Aug", "8")
myMonth = Replace(myMonth, "Sep", "9")
myMonth = Replace(myMonth, "Oct", "10")
myMonth = Replace(myMonth, "Nov", "11")
myMonth = Replace(myMonth, "Dec", "12")
Dim myDay
myDay = myArr(4)
myDay = Replace(myDay, "01", "1")
myDay = Replace(myDay, "02", "2")
myDay = Replace(myDay, "03", "3")
myDay = Replace(myDay, "04", "4")
myDay = Replace(myDay, "05", "5")
myDay = Replace(myDay, "06", "6")
myDay = Replace(myDay, "07", "7")
myDay = Replace(myDay, "08", "8")
myDay = Replace(myDay, "09", "9")
Dim myYear
myYear = myArr(5)
Dim myFormatDateTime
myFormatDateTime = myMonth & "/" & myDay & "/" & myYear & " " & myHour & ":" & myMinute & ":" & mySecond & " " & AMorPM
myFormatDateTime = Cdate(myFormatDateTime)
Response.Write myFormatDateTime
HEJ!
Jag förslår att du tittar på FormatDateTime-funktionen.
http://www.devguru.com/Technologies/vbscript/quickref/formatdatetime.html
,2 och ,3 borde göra exakt det du vill.
Ditt sätt fungerar säkert alldeles utmärkt, men vad händer om servern byts eller du flyttar webbplatsen?
Eftersom du inte har/visar att du sätter datum i ett speciellt format, (LCID) kan det bli helt fel då.
Koden du skrivit gör ju att kl. 11 är PM. Stämmer inte riktigt...
Kanske inte helt perfekt, men snyggare...
Function FixDate(sDate)
Dim dDate, lHour As Long, sPeriod As String
dDate = CDate(Mid(sDate, 1, Len(sDate) - 4))
lHour = Hour(dDate)
If lHour >= 12 Then
sPeriod = "PM"
lHour = lHour - 12
Else
sPeriod = "AM"
End If
If lHour = 0 Then
lHour = 12
End If
FixDate = Month(dDate) & "/" & Day(dDate) & "/" & Year(dDate) _
& " " & lHour & ":" & Right("0" & Minute(dDate), 2) & ":" & Right("0" & Second(dDate), 2) _
& " " & sPeriod
End Function
Tack Erik, din kod såg ju betydligt enklare och bättre ut!
Men nu har jag en annan fråga om datum!
Om jag skirver ut ett datum från servern med Now() så blir det ju till ändra serverns insällda datum-format eller till ett format satt av session.LCID.
Om datum är satt av Session.LCID så vill jag minnas att det kan bli problem när man vill spara det i en databas, har jag fel?
Hur som helst hur gör man för att vara helt säker på att ett datum alltid är i rätt format för att kunna sparas i en databas oavsett om serven är inställd till engelsk, svensk eller amrikansk etc...
?
Om jag ställer frågan så här istället =)
Detta är (som jag förstår) en Amerikansk datum standard: 3/22/2005 7:32:10 PM
Kan man räkna med att det Alltid går att spara ett datum med det formatet i en MsAccess och MsSQL databas?
Ja eller Nej
HEJ!
Jag brukar göra så att jag formaterar det till svenska, eftersom norska datum innehåller punkter, och blir fel i en svensk Accessfil.
Jag skulle nog vilja påstå att använder du snedstreck i ditt format borde det inte krångla.
För säkerhets skull, kan du ju sätta engelskt format på sidan, OM någon skulle få för sig att flytta webbplatsen till en icke-engelsk server.