我使用以下函数将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
对象的格式?
答案 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
但你最好看看DateTimeOffset
:DateTime vs DateTimeOffset
(不建议,但假冒它仍然使用DateTime
:string.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);