12

我使用以下函数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

4 回答 4

14

您可以从 DateTime 转到该格式

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

并从该格式到 DateTime

DateTimeOffset.Parse(dateString);

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

于 2013-01-10T07:06:02.043 回答
8

您最好使用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");
于 2013-01-10T07:16:38.257 回答
4

您不能从 执行此操作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

(不可取,但要伪造它并仍然使用DateTime:)string.Format("{0:s}.{0:fff}+04:00", dt)

于 2013-01-10T07:04:33.887 回答
-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);
于 2013-01-10T06:56:02.353 回答