UweMedlem sedan nov. 2003181 inlägg 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.
/Uwe
JosefMedlem sedan mars 20023 561 inlägg Provat med culture="sv-SE" uiCulture="sv-SE" i web.config?
UweMedlem sedan nov. 2003181 inlägg Men det är väl bara till för vilket datumformat som sidan ska använda? I detta fallet kan användaren skriva in datum i olika format.
GladhMedlem sedan maj 20012 812 inlägg DateTime datum;
string stringDatum = datum.ToString("yyyy-MM-dd");
- M
JosefMedlem sedan mars 20023 561 inlägg Aha... Sorry. Nu förstår jag. :r
UweMedlem sedan nov. 2003181 inlägg Gladh: Eftersom det inte är ett datum, utan en sträng jag har så blir det problem när jag vill göra strängen ex 30.8.2005 (d.M.yyyy) till ett datum.
janrochMedlem sedan jan. 200518 inlägg Lite exempel:
string inDate = "30.8.2005";
string inDateFormat = "d.M.yyyy";
System.Globalization.DateTimeFormatInfo dtfi = new System.Globalization.DateTimeFormatInfo();
dtfi.DateSeparator = ".";
dtfi.ShortDatePattern = inDateFormat;
DateTime theDate = DateTime.Parse(inDate, dtfi);
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?
UweMedlem sedan nov. 2003181 inlägg Tack janroch, funkar perfekt!!! :)
GladhMedlem sedan maj 20012 812 inlägg
Gladh: Eftersom det inte är ett datum, utan en sträng jag har så blir det problem när jag vill göra strängen ex 30.8.2005 (d.M.yyyy) till ett datum.
Okej, nu fattar jag med, dags att komma in i matchen kanske..
ArneMedlem sedan maj 2000267 inlägg Formatera sträng
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)
GladhMedlem sedan maj 20012 812 inlägg 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.
- M
ArneMedlem sedan maj 2000267 inlägg Missförstånd
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)
freddykMedlem sedan okt. 2006103 inlägg
Arne skrev:
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...
butikoMedlem sedan jan. 2007152 inlägg 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.
GladhMedlem sedan maj 20012 812 inlägg
Arne skrev:
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