vill byta plats på 12 och 30 i detta datumformat mmddyyyy,12/30/2004. Använd Regular Expressions, väldigt kraftfullt om man behärskar det... Private Function BytPlats(ByVal InDatum As String) As String tackar så mycket för dessa snabba o fynndiga svar som jag kommer ha med mig ett tag framåt = ) Man kan även skriva om mitt exempel lite för att den också ska klara av datum där det enbart förekommer en siffra, tex 4/5/2004 kan man göra så att datumet är mellan 1-31,månad 1-12 och år 2004-2104 RegExp (\d{1, 2})/(\d{1, 2})/(\d{4}) Du menar att du vill kunna ha 31/2/2005 men inte 31/2/2002 ? micke: Du menar att du vill kunna ha 31/2/2005 men inte 31/2/2002 ?. Jag har en fråga. Vill du byta plats på siffrorna för att du vill ha ett annat datumformat, eller har du något annat skäl? För det finns ju en hel del datumformatterings-funktioner. det är så att jag vill slänga in ett datum som en användare knappat in på en textbox eller som finns där när page_load ( txtHierd.Text = dat.ToString("d", ci) ). txtHierd.Text = dat.ToShortDateString() Du kan göra en kontroll om datumet är ett giltligt datum innan du kör RegExp... tackar så killar det var mycket hjälp man fick av Er. =) Man kan ange något som heter LCID... det där var fiffigt, var skriver man detta. Man kan skriva det i Session_OnStart i filen global.asax eller i princip var som helst. SQL tar ALLTID emot datumet i formatet yyyy-MM-dd, oavsett språkinställning, så där är det lugnt. Det beror väl på att "yyyy-mm-dd hh:mm:ss" är ISO standarden och ANSI SQL använder väl denna standarden?byta plats i en strang
så att det blir ddmmyyyy,30/12/2004.
strSourc=12/30/2004
har försökt med strSource.CopyTo men det är så krångligt så det måste finnas nått bättre o enklare sätt att göra det på. tacksam för svar.Sv: byta plats i en strang
Testa med följande...
<code>
Imports System.Text.RegularExpressions 'Högst upp i filen
Private Function ChangePlace(Text As String) As String
Return RegEx.Replace(Text, "(\d{2})/(\d{2})/(\d{4})", "$2/$1/$3")
End Function
</code>
Borde fungera...
Mvh,
Thomas VanhaniemiSv: byta plats i en strang
Dim d As Date
Dim myDTFI As System.globalization.DateTimeFormatInfo = New System.Globalization.CultureInfo("en-US", True).DateTimeFormat
myDTFI.ShortDatePattern = "MM/dd/yyyy"
d = Date.Parse(InDatum, myDTFI)
Return d.ToString("dd\/MM\/yyyy")
End Function
Denna klarar även av 4/5/2003 och liknande datum (men bara datum...)
/mickeSv: byta plats i en strang
.thanxSv: byta plats i en strang
<code>
Imports System.Text.RegularExpressions 'Högst upp i filen
Private Function ChangePlace(Text As String) As String
Return RegEx.Replace(Text, "(\d{1, 2})/(\d{1, 2})/(\d{4})", "$2/$1/$3")
End Function
</code>
Denna kod fungerar även på en hel text...
Till exempel:
Jag testar nu 2/4/2004 om det blir 4/2/2004.
Svaret ska då bli:
Jag testar nu 4/2/2004 om det blir 2/4/2004.
Mvh,
ThomasSv: byta plats i en strang
5-0!!Sv: byta plats i en strang
Enligt min ödmjuka åsikt är det nog bättre att behandla datum som datum, om det är det du vill hantera här...
/mickeSv: byta plats i en strang
ja precis så.
¨
[1-31] [1-12] [2004-2104]
hur skriver man in det i detta utryck:
(\d{1, 2})/(\d{1, 2})/(\d{4})
finns det bra sida som förklara RegularExpression?Sv: byta plats i en strang
Sv: byta plats i en strang
jag tar den strängen som är "30/12/2004".
men när jag slänger in det i sql så tar den inte emot detta format den tar bara "12/30/2004" amrikansk, därför måste jag ändra det till amerikans format när jag lägger in det i databasen och 30/12/2004 format när jag hämtar det.
krångligt ellerhurSv: byta plats i en strang
hämtar från kontrollpanelen hur din användare har datorn inställd. Då blir formatet rätt...
SQL gillar formatet 'yyyy-mm-dd' bäst. Det är ett format som alltid funkar.
dat.ToString("yyyy-MM-dd") funkar där.
Bättre att lösa problemet än att göra en workaround :)
/mickeSv: byta plats i en strang
<code>
If IsDate("2/3/2004") Then
'Giltligt datum
End If
</code>
I RegExp kan man inte, vad jag vet, ange [1-31] för det motsvarar 1-3 eller 1.
Man kan däremot skriva [0-3]?[0-9]{1} för att komma i närheten av korrekt tal.
Föregående träffar tal mellan 0-39...
Däremot kan man ange på ett lite längre sätt exakta tal den kan träffa genom att skriva (0?[1-9]|[1-2][0-9]|3[0-1])
Föregående träffar på tal mellan 1 - 31...
På www.regular-expressions.info finns en hel del nyttig information om Regular Expressions.
Mvh,
ThomasSv: byta plats i en strang
men en en sak bara, txtHierd.Text = dat.ToShortDateString()
tänk om användaren sitter i en dator som har helt annan datumformat i ett internetcafé i andra sidan jordklotet?Sv: byta plats i en strang
<code>
Session.LCID = 1053 'Svenskt format
</code>
Detta medför att alla datum skrivs ut i svenskt format...
Mvh,
ThomasSv: byta plats i en strang
finns det nåt liknande i sql. (inte så viktigt*nyfiken bara*)
jag ska kolla lite i msdn.
tackarSv: byta plats i en strang
Den gäller under tiden Sessionen är aktiv för användaren, så man behöver bara ange det en gång per session.
Gällande SQL vet jag inte, men det finns nog inställningar för det där också...
Mvh,
ThomasSv: byta plats i en strang
/mickeSv: byta plats i en strang