2013-01-10 12 views
9

użyłem następujące funkcje do konwersji DateTime z/do string:jak datę konwersji z „T” do/z ciągiem w C#

DATE_OBJ.ToString(DATE_FORMAT); 

DateTime.ParseExact(Date_string, DATE_FORMAT, null); 

Teraz mam do pracy z formatem obserwacji 2012-03-20T14:18:25.000+04:00

Który format powinienem użyć, aby przekonwertować go poprawnie na string i wygenerować string jak ten z obiektu DateTime?

+0

proszę przejść to [Link] (http://www.w3.org/TR/NOTE-datetime). To może ci pomóc –

Odpowiedz

11

można przejść od DateTime do tego formatu z

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

iz tego formatu do DateTime z

DateTimeOffset.Parse(dateString); 

Oto więcej informacji na temat formatu DateTime: http://www.dotnetperls.com/datetime-format

+1

+1: jednak radziłbym czytać MSDN [Specyfikator formatu Round-trip ("O", "o")] (http: // msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip) – horgh

+0

To dobry link. Dziękuję @KonstantinVasilcov – Moriya

-3

Jeśli jest to ciąg, który otrzymasz, możesz podzielić ciąg przez T i użyć tylko pierwszej części, która jest składnikiem Date całego łańcucha i przeanalizować go.

ex:

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

Pytanie jest odwrotnie: DateTime -> String – Jacco

2

Nie można tego zrobić z DateTime, jak DateTime posiada żadnych TimeZone info.

To jest close: string.Format("{0:s}", dt) da 2012-03-20T14:18:25. Patrz: http://www.csharp-examples.net/string-format-datetime/

Można przedłużyć to: string.Format("{0:s}.{0:fff}", dt), które dadzą 2012-03-20T14:18:25.000

Ale lepiej przyjrzeć się DateTimeOffset: DateTime vs DateTimeOffset

(nie jest wskazane, ale udawać i nadal korzystać DateTime : string.Format("{0:s}.{0:fff}+04:00", dt))

5

Jesteś lepszego wykorzystania DateTimeOffSet jak:

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");