2013-01-10 11 views
9

Ho usato le seguenti funzioni per convertire DateTime da/in string:come convertire appuntamento con 'T' per/da stringa in C#

DATE_OBJ.ToString(DATE_FORMAT); 

DateTime.ParseExact(Date_string, DATE_FORMAT, null); 

Ora ho avuto modo di lavorare con il formato follow 2012-03-20T14:18:25.000+04:00

Quale formato dovrei usare per convertirlo correttamente in string e generare string come quello dall'oggetto DateTime?

+0

prega di passare attraverso questo [Link] (http://www.w3.org/TR/NOTE-datetime). Può essere d'aiuto –

risposta

11

Si può andare da DateTime in tale formato con

DateTime dt = new DateTime(); 
dt.Tostring("o"); 

e da quel formato DateTime con

DateTimeOffset.Parse(dateString); 

Ecco qualche informazione in più sul formato DateTime: http://www.dotnetperls.com/datetime-format

+1

+1: tuttavia, consiglierei di leggere MSDN [Round-trip ("O", "o") Format Specifier] (http: // msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip) – horgh

+0

Questo è un buon collegamento. Grazie @ Konstantin Vasilcov – Moriya

-3

Se si tratta di una stringa che si riceve, è possibile dividere la stringa con T e utilizzare solo la prima parte che è il componente Date dell'intera stringa e analizzarla.

es:

string dateTimeAsString = "2012-03-20T14:18:25.000+04:00"; 
string dateComponent = dateTimeAsString.Splic('T')[0]; 
DateTime date = DateTime.ParseExact(dateComponent, "yyyy-MM-dd",null); 
+0

La domanda è il contrario: DateTime -> String – Jacco

2

Non si può fare questo da DateTime, come DateTime non detiene TimeZone informazioni.

Questo è vicino: string.Format("{0:s}", dt) darà 2012-03-20T14:18:25. Vedi: http://www.csharp-examples.net/string-format-datetime/

Si potrebbe estendere questo a: string.Format("{0:s}.{0:fff}", dt), che darà 2012-03-20T14:18:25.000

Ma è meglio dare un'occhiata a DateTimeOffset: DateTime vs DateTimeOffset

(Non è consigliabile, ma ad esso falso e ancora usare DateTime : string.Format("{0:s}.{0:fff}+04:00", dt))

5

Sei meglio di utilizzare DateTimeOffSet come:

string str = " 2012-03-20T14:18:25.000+04:00"; 
DateTimeOffset dto = DateTimeOffset.Parse(str); 
//Get the date object from the string. 
DateTime dtObject = dto.DateTime; 

//Convert the DateTimeOffSet to string. 
string newVal = dto.ToString("o"); 
Problemi correlati