如何在C#中将日期与'T'转换为/从字符串转换

时间:2013-01-10 06:51:04

标签: c# datetime

我使用以下函数将DateTime从/转换为string

DATE_OBJ.ToString(DATE_FORMAT);

DateTime.ParseExact(Date_string, DATE_FORMAT, null);

现在我必须使用以下格式2012-03-20T14:18:25.000+04:00

我应该使用哪种格式将其正确转换为string并生成string来自DateTime对象的格式?

4 个答案:

答案 0 :(得分:13)

您可以使用

从DateTime转到该格式
DateTime dt = new DateTime();
dt.ToString("o");

从该格式到DateTime with

DateTimeOffset.Parse(dateString);

以下是有关DateTime格式的更多信息: http://www.dotnetperls.com/datetime-format

答案 1 :(得分:6)

您最好使用DateTimeOffSet,例如:

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

答案 2 :(得分:3)

您无法从DateTime执行此操作,因为DateTime不包含TimeZone信息。

结束:string.Format("{0:s}", dt)会给2012-03-20T14:18:25。 请参阅:http://www.csharp-examples.net/string-format-datetime/

您可以将其扩展为:string.Format("{0:s}.{0:fff}", dt),这将提供2012-03-20T14:18:25.000

但你最好看看DateTimeOffsetDateTime vs DateTimeOffset

(不建议,但假冒它仍然使用DateTimestring.Format("{0:s}.{0:fff}+04:00", dt)

答案 3 :(得分:-3)

如果这是您收到的字符串,那么您可以将字符串拆分为T并仅使用第一部分,即整个字符串的Date组件并解析该字符串。

例如:

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