Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups microsoft.public.de.* 1 Forum > Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11-02-2009, 01:16 PM
Dirk Herwig
 
Beiträge: n/a
Standard Datum konvertieren

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

Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 11-02-2009, 01:22 PM
Kerem Gümrükcü
 
Beiträge: n/a
Standard Re: Datum konvertieren

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
-----------------------

Mit Zitat antworten
  #3  
Alt 11-02-2009, 01:43 PM
FrankDzaebel
 
Beiträge: n/a
Standard Re: Datum konvertieren

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
Mit Zitat antworten
  #4  
Alt 11-02-2009, 02:45 PM
Dirk Herwig
 
Beiträge: n/a
Standard Re: Datum konvertieren

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

Mit Zitat antworten
  #5  
Alt 11-02-2009, 07:59 PM
Frank Dzaebel
 
Beiträge: n/a
Standard Re: Datum konvertieren

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

Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ä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


Alle Zeitangaben in WEZ. Es ist jetzt 02:32 PM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints