Har lite problem att formatera datum i olika format till det svenska. Tycker inte det borde vara så svårt men nu börjar jag bli lite smått irriterad över att inte få ihop det. :x
Så till problemet: Jag tar emot ett datum i en sträng där jag även vet i vilket format det är (ex MM/dd/yyyy alt d.M.yyyy). Därifrån vill jag få det till yyyy-MM-dd. Har försökt med string.Format utan framgång. Tacksam för vilka konstruktiva förslag som helst.
Nu kan du formattera datumet bäst du vill. Det enda du måste veta är hur det första datumet i inDate är formaterat och vilken separator som använts. Men det visste du väl?
Koden nedan fungerar perfekt för mig, men mitt problem är att den datumsträng jag har är ihopskriven utan tecken.
Har provat detta:
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
men får felmeddelandet:
System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.
Vad göra?
Detta fungerar...
Dim inDatum As String = "1978.08.07"
Dim inDateFormat As String = "yyyy.M.d"
Dim dtfi As New System.Globalization.DateTimeFormatInfo()
dtfi.DateSeparator = "-"
dtfi.ShortDatePattern = inDateFormat
Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
Har du testat att ta bort punkterna i inDateFormat strängen. Jag kan inte se att du måste ha någon separator överhuvudtaget.
Det blir dock jobbigare om du ibland har puntk som separator och ibland inte, då måste du först kontrollera detta med IndexOf() och sedan välja rätt inDateFormat.
inDatum strängen har "aldrig" punkter den är alltid ihopskriven som en hel sträng, utan separator.
Har även inga punkter i inDateFormat strängen (se kod nedan)
Det jag vill, är att få en separator för läsbarhetens skull.
Det är när jag provade (kod nedan), jag får felmeddelandet:
System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
Dim dtfi As New System.Globalization.DateTimeFormatInfo()
dtfi.DateSeparator = "-"
dtfi.ShortDatePattern = inDateFormat
Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
inDatum strängen har "aldrig" punkter den är alltid ihopskriven som en hel sträng, utan separator.
Har även inga punkter i inDateFormat strängen (se kod nedan)
Det jag vill, är att få en separator för läsbarhetens skull.
Det är när jag provade (kod nedan), jag får felmeddelandet:
System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
Dim dtfi As New System.Globalization.DateTimeFormatInfo()
dtfi.DateSeparator = "-"
dtfi.ShortDatePattern = inDateFormat
Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
Kan du inte göra om strängen inDatum med ett Regular Expression som infogar ett (-) mellan yyyymmdd, och sedan kastar tillbaka det som yyyy-mm-dd. Då borde det ju fungera. Förutsatt att datumet alltid ser ut så...
Ditt kodexempel letar väl efter (-) för att identifiera de olika datumdelarna? Eller har jag missuppfattat kanske...
Om strängen med datumet alltid har samma struktur så kan du exempelvis lägga till två bindestreck på rätt plats med Insert-metoden och sedan konvertera strängen till ett datum:
string s = "20070101";
DateTime dt = Convert.ToDateTime(s.Insert(4, "-").Insert(7, "-"));
...och är det bara för läsbarhetens skull så behöver du ju inte konvertera den till ett datum heller.
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
Din datumsträng ser ju inte ut som din datumformatsträng, du har fel antal tecken.
Dim inDateFormat As String = "yyyyMMdd"
Borde fungera, jag kan inte se att du måste ha en separator med, men om du skulle behöva det, så är det ju inte så svårt att lägga till det precis som butiko visar.
Sedan så kanske du måste ändra följande kodrad också:
dtfi.DateSeparator = "-"
till
dtfi.DateSeparator = ""
- M
267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25