C# 如何将日期时间字符串解析为日期对象
我有以下字符串C# 如何将日期时间字符串解析为日期对象,c#,datetime,C#,Datetime,我有以下字符串string strtime=“2013-04-05T12:30:00.000+00:00” 如何将该字符串解析为datetime对象?我想保留格式 我知道以下事情 WriteLine(DateTime.Now.ToString("o")); 2013-06-03T19:11:51.7233344+02:00 WriteLine(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fzzz")); 2013-06-03T19:26:52.7+02
string strtime=“2013-04-05T12:30:00.000+00:00”代码>
如何将该字符串解析为datetime对象?我想保留格式
我知道以下事情
WriteLine(DateTime.Now.ToString("o"));
2013-06-03T19:11:51.7233344+02:00
WriteLine(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fzzz"));
2013-06-03T19:26:52.7+02:00
但是我不确定在哪里为我已经存在的timedate字符串提供格式“o”
编辑:
如果我使用简单的
datetime = DateTime.Parse(strtime);
writeLine(datetime.ToString());
我得到:
2013-07-01 12:30:00
有些信息丢失了。我需要datetime对象中的所有信息“2013-04-05T12:30:00.000+00:00
”
编辑2:提供更大的图景。
我必须将字符串2013-04-05T12:30:00.000+00:00
保存到datetime对象,然后我需要再次将datetime对象保存/转换为字符串。最后,两个字符串的格式必须相同2013-04-05T12:30:00.000+00:00
我想我已经找到了解决办法,我会把它贴在这里。
一个简单的datetime.ToString()
将切断信息
WriteLine(datetime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz"));
//2013-02-01T12:30:00.001+01:00
dateTimeObject=DateTime.Parse(“2013-04-05T12:30:00.000+00:00”)
有什么问题?以及“我想保留格式”是什么意思DateTime
是一个数字,没有与之相关的格式信息(更糟糕的是没有时区)。我收到以下信息:2013-07-01 12:30:00。没有时区,没有毫秒。DateTime
对象没有格式概念。它存储所需的数据(如日、月、年等),您的格式化程序(如“o”
)指示信息的显示方式。感谢您的评论。“o”仅用于以特定格式显示时间的信息非常重要。如果您从其他站点复制了代码,则最好包含源代码
public class Example
{
public static void Main()
{
string[] dateStrings = {"2008-05-01T07:34:42-5:00",
"2008-05-01 7:34:42Z",
"Thu, 01 May 2008 07:34:42 GMT"};
foreach (string dateString in dateStrings)
{
DateTime convertedDate = DateTime.Parse(dateString);
Console.WriteLine("Converted {0} to {1} time {2}",
dateString,
convertedDate.Kind.ToString(),
convertedDate);
}
}
}
// These calls to the DateTime.Parse method display the following output:
// Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
// Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
// Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
datetime = DateTime.Parse("2013-02-01T12:30:00.001+01:00");
//datetime object shows 2013-02-01 12:30:00 but the ms are still stored.
//just use "o"
WriteLine(datetime.ToString());
//2013-02-01 12:30:00
WriteLine(datetime.ToString("o"));
//2013-02-01T12:30:00.0010000+01:00
WriteLine(datetime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz"));
//2013-02-01T12:30:00.001+01:00
String str = datetime.ToString("o");
WriteLine("my: "+str);
//my: 2013-02-01T12:30:00.0010000+01:00