![]() |
|
|||||||
| Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Hallo,
ich lese aus einer MS SQL Express DB ein Feld aus, welches vom Typ DateTime ist. Das Datum erhalte ich dann aber in unserem deutschen Format. Könnt ihr mir sagen, wie ich das Datum als ein kulturunbahängiges Datum einlese? foreach(DataRow row in ds.Tables[0].Rows) { .... string datum=row[5].ToString(); Gruß Dirk |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
Hallo Dirk,
> Das Datum erhalte ich dann aber in unserem deutschen Format. Kannst Du mal bitte schnell posten, wie das aussieht,... Ansonsten probierst Du das mal: DateTime dt = DateTime.Parse("DerStringAusDerDatenbank"); Grüße Kerem -- ----------------------- Beste Grüsse / Best regards / Votre bien devoue Kerem Gümrükcü Latest Project: http://www.pro-it-education.de/software/deviceremover Latest Open-Source Projects: http://entwicklung.junetz.de ----------------------- |
|
#3
|
|||
|
|||
|
Hallo Dirk,
> ich lese aus einer MS SQL Express DB ein Feld aus, welches > vom Typ DateTime ist. ok, möglichst intern mit diesem Typ rechnen und nicht über Strings gehen. > Das Datum erhalte ich dann aber in unserem > deutschen Format. Nicht ganz, das wird im Debugger so angezeigt, weil Deinen lokalen Regionseinstellungen deutsch sind, ist aber im Prinzip unabhängig, je nachdem, mit welchem Quellcode Du es in die DB gespeichert hast. "Anzeigen" kannst Du es nun auf verschiedene Art und Weise: [DateTime-Standardformatzeichenfolgen] http://msdn.microsoft.com/de-de/libr...k1(VS.80).aspx Mit Deiner Bezeichnung: "kulturunabhängig" kann mehreres gemeint sein. Zunächst haben wir durch UTC eine ~unabhängige Uhrzeit und dann wiederum eine invariante Schreibweise, z.B. über InvariantCulture, etwa: DateTime deinDatum = DateTime.Now; string zeit = deinDatum.ToString("U", CultureInfo.InvariantCulture); Das Interpretieren eine Strings in ein DateTime passiert normal über DateTime.Parse und andere analoge Methoden. Aber ich vermute, Du arbeitest über eine DataGridView, da würde es bessere Metoden geben. > Könnt ihr mir sagen, wie ich das Datum als ein > kulturunbahängiges Datum einlese? Was gibt denn der User da genau ein. UTC? Oder lokale Zeit? Definiertes Datumsformat? ciao Frank -- Dipl.Inf. Frank Dzaebel [MCP/MVP C#] http://Dzaebel.NET |
|
#4
|
|||
|
|||
|
Ich hatte es jetzt so gemacht:
CultureInfo info = new CultureInfo(""); DateTime dt = DateTime.Parse(row[5].ToString()); string datum = dt.ToString(info); Gespeichert wird die lokale Zeit des Users in der DB. Die Daten werden dann aus der DB ausgelesen und als eine modifizierte XML gespeichert. Diese wiederum wird in den USA ausgewertet. Die kommen mit unserer Zeit in der XML nicht klar. Ist das so i.O., wie ich das jetzt gelöst hatte oder kann es da auch zun Problemen kommen? Gruss Dirk |
|
#5
|
|||
|
|||
|
Hallo Dirk,
> Ich hatte es jetzt so gemacht: > CultureInfo info = new CultureInfo(""); Nebenbei ... hier wäre 'CultureInfo.InvariantCulture' etwas sauberer (siehe auch mein voriges Posting), obwohl mit gleichem Ergebnis. > DateTime dt = DateTime.Parse(row[5].ToString()); > string datum = dt.ToString(info); da hatte ich Fragen zu gestellt, die Du nicht beantwortet hast. Aber gut, wenn Du das so umwandelst hast, kommt ein invarianter String der DateTime-Darstellung heraus. Entscheidend ist aber zum einen, *wie* Du nun die Zeit in die XML Datei schreibst und wie Du sie herausliest. Zum anderen, ob wie die Zeit in den USA gemeint sein soll. Es könnte gemeint sein, dass 19:00 in Deutschland auch 19:00 in USA sein soll, oder eben der gemäß *Zeitverschiebung* entsprechende Wert. Hier vielleicht mal ein kleines Beispiel, an dem Du Dir das klar machen kannst: string xmlDateiname = "Zeiten.xml"; string colZeitpunkt = "Zeitpunkt"; private void Form1_Load(object sender, EventArgs e) { DataSet ds = new DataSet(); DataTable tbl = new DataTable(); tbl.TableName = Path.GetFileName(xmlDateiname); ds.Tables.Add(tbl); FülleZeilen<DateTime>(tbl); // <DateTimeOffset> ds.WriteXml(xmlDateiname); Process.Start("notepad", xmlDateiname); // <DateTime>: 2009-11-02T09:00:00+01:00 // <DateTimeOffset>: 2009-11-02T09:00:00Z tbl.Rows.Clear(); ds.ReadXml(xmlDateiname); } private void FülleZeilen<T>(DataTable tbl) { tbl.Rows.Clear(); tbl.Columns.Clear(); DateTime dt = new DateTime(2009, 11, 2, 09, 0, 0); tbl.Columns.Add(colZeitpunkt, typeof(T)); // tbl.Columns[colZeitpunkt].DateTimeMode = DataSetDateTime.Utc; if (typeof(T) == typeof(DateTime)) tbl.Rows.Add(dt); if (typeof(T) == typeof(DateTimeOffset)) tbl.Rows.Add(new DateTimeOffset(dt,TimeSpan.Zero)); } ___________ > Ist das so i.O., wie ich das jetzt gelöst hatte oder kann es da auch zu > Problemen kommen? wohl eher nicht. Wie gesagt, je nachdem, wie das XML-Schreiben, Lesen implementiert ist, und wie es gemeint sein soll. [DateTimeInvalidLocalFormat] http://msdn.microsoft.com/de-de/libr...13(VS.80).aspx Also könnte auch UTC gemeint sein, dann würde man die DateTimeMode-Eigenschaft des DataColumn-Objekts auf Utc festlegen: tbl.Columns[colZeitpunkt].DateTimeMode = DataSetDateTime.Utc; und die Serialisierung würde automatisch ohne Zeitzonen- Zusatz vonstatten gehen. Manuell umgewandelt etwas wie: DateTime myDateTime = DateTime.UtcNow; string serialized = XmlConvert.ToString(myDateTime, XmlDateTimeSerializationMode.RoundtripKind); ciao Frank -- Dipl.Inf. Frank Dzaebel [MCP/MVP C#] http://Dzaebel.NET |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Knifflig:.. lösbar? Umwandlung 'Datum' in Datum ? | Steffen Brose | Newsgroup microsoft.public.de.access | 9 | 10-25-2009 10:00 AM |
| Datum string in Datum Konvertieren | ntoni nsimba | Newsgroup microsoft.public.de.access | 2 | 09-23-2009 02:46 PM |
| Kalenderwoche in Datum von-bis konvertieren | Kalenderwoche in Datum von-bis konvertie | Newsgroup microsoft.public.de.excel | 1 | 07-02-2008 04:57 PM |
| Datum konvertieren | Volkmar Waluga | Newsgroup microsoft.public.de.sqlserver | 14 | 03-12-2008 03:23 PM |
| [OO 2] Konvertieren OO Dokumente - Datum beibehalten | Stefan Heinrich | Newsgroup de.comp.office-pakete.misc | 1 | 03-22-2007 04:39 PM |