我使用以下函数将DateTime
从/转换为string
:
DATE_OBJ.ToString(DATE_FORMAT);
DateTime.ParseExact(Date_string, DATE_FORMAT, null);
现在我必须使用以下格式2012-03-20T14:18:25.000+04:00
我应该使用哪种格式将其正确转换为string
并从DateTime
对象生成string
?
可以使用
将DateTime设置为该格式DateTime dt = new DateTime();
dt.ToString("o");
和从该格式到DateTime的
DateTimeOffset.Parse(dateString);
以下是关于日期时间格式的更多信息:http://www.dotnetperls.com/datetime-format
你最好使用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");
您不能在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)
)
如果这是你收到的字符串,那么你可以按T分割字符串,只使用第一部分,即整个字符串的日期组件,并解析它。
,
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);