我使用以下函数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
?
您可以从 DateTime 转到该格式
DateTime dt = new DateTime();
dt.ToString("o");
并从该格式到 DateTime
DateTimeOffset.Parse(dateString);
以下是有关 DateTime 格式的更多信息: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 拆分并仅使用作为整个字符串的 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);