string zu DateTime Konvertierung in C#
Dumm Fragen aber kann nicht meinen Kopf um ihn herum...
Ich habe einen string in diesem format 20081119
Und ich habe eine C# - Methode konvertiert den string in eine DateTime eingegeben werden in eine SQL Server-DB -
public static DateTime MyDateConversion(string dateAsString)
{
return System.DateTime.ParseExact(dateAsString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
}
Das problem ist, dass das Datum kommt so: Datum = 19/11/2008 12:00:00 AM, und ich brauche es, um ein DateTime-Typ in der Form JJJJMMTT, wie ich bin-mapping in ein schema zum Aufruf einer stored proc.
Vielen Dank im Voraus Jungs.
Cheers,
Con
wo sehen Sie die dateTime des yyyyMMdd? Was sind Sie senden Sie Ihre biztalk-mapper?
InformationsquelleAutor | 2008-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Sache wie "einen DateTime-Typ JJJJMMTT"; DateTime ist nur eine große ganze Zahl, die angibt, Zeit in einer Epoche - er hat kein format. Aber das ist in Ordnung, da sollten Sie mit Hilfe eingestellt TSQL-sowieso - also fügen Sie einfach die DateTime-Wert eines DbParameter, und es wird übergeben, um die db, die in eindeutiger Weise (nicht verwenden, die string-Verkettung zu bauen TSQL-Befehl):
oder für eine
SqlCommand
:Wenn Sie wirklich brauchen ein string, dann verwenden Sie einfach die Zeichenfolge direkt als [n][var]char-parameter.
Also in diesem Fall, zu analysieren, das Datum würde ich verwenden Sie die invariante Kultur, da Kultur nicht über das format):
Aus der Konversation, es scheint, Sie müssen möglicherweise auch, um zu gehen von einem DateTime-einen string, in dem Fall einfach rückgängig machen:
InformationsquelleAutor Marc Gravell
Datum, Zeit ist eine Klasse, die standardmäßig die Formate ToString als 19/11/2008 12:00:00 UHR
Dies ist aus MSDN, die Ihnen helfen können
Können Sie in der Lage, daher, zu überladen der ToString-DateTime in das gewünschte format, sonst übergeben Sie die string-Darstellung direkt auf die gespeicherte Prozedur, statt
InformationsquelleAutor johnc
Ok, zurück zu der Kultur Sache... Wenn Sie sagen:
Ich vermute, Sie führen ein ToString auf das Datum, um zu sehen, dieses Ergebnis? Die Formatierung in ToString wird variieren, basierend auf der Kultur und Ihre aktuellen Kultur standardmäßig.
War ich in der Lage zu reproduzieren das format Ihrer Anreise durch dies zu tun:
Haben Sie ein gültiges Datum, so wird die Formatierung sollte keine Rolle spielen, aber wenn es funktioniert und Sie brauchen, um es in das format, das Sie beschrieben haben, dann müssen Sie es formatieren, wenn die Umwandlung in ein string... wenn es schon ein string ist, dann gibt es keine Notwendigkeit für die Datums-Konvertierung.
Ich könnte mis-Lesen Sie Ihre Frage, aber ich hatte, um dieses zu erhalten b/c es war nervt mich.
InformationsquelleAutor Andrew Van Slaars
Ich denke, es ist aufgrund der Kultur-set in CurrentCulture, ohne zu wissen, was das ist, ich bin mir nicht sicher, aber die Angabe "en-US" funktioniert auf meinem Ende. Hier ist der code den ich habe:
Probieren Sie es aus und sehen, ob es für Sie arbeitet.
Kultur war der einzige Grund, den ich sehen konnte, für Datum und Monat, um die Positionen gewechselt... Es war das einzige, was ich denken konnte.
InformationsquelleAutor Andrew Van Slaars
Dies ist, was exakte Ergebnis, die Sie suchen:
convert( varchar(10), getdate(), 112 ) : datetime-string (format YYYYMMDD)
convert( datetime, '20081203', 112 ) : string zu datetime (format YYYYMMDD)
Code Seite:
DateTimeFormatInfo fmt = (new CultureInfo("hr-HR")).DateTimeFormat;
Console.WriteLine(thisDate.ToString("d", fmt)); //Zeigt 15.3.2008 (ähnliche Formate acc, um Ihre Anforderungen)
oder
Datum1.ToString("YYYYMMDD",CultureInfo.CreateSpecificCulture("en-US"))
Datum1.ToString("YYYYMMDD");
Details zu http://msdn.microsoft.com/en-us/library/az4se3k1.aspx
Bitte überprüfen Sie die bearbeitete version
InformationsquelleAutor Samiksha