Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何将字符串转换为时间和日期格式?_C#_Datetime - Fatal编程技术网

C#如何将字符串转换为时间和日期格式?

C#如何将字符串转换为时间和日期格式?,c#,datetime,C#,Datetime,我有一个简短的程序,可以将一个字符串从一个简单的字符串转换为日期和时间格式 但是,由于字符串的顺序,系统似乎无法识别该字符串,无法将其转换为日期-时间格式。应该转换的字符串是这样一个示例:“Thu Dec 9 05:12:42 2010” 已使用Convert.ToDateTime方法,但该方法不起作用 有人能告诉我密码吗?谢谢 String re = "Thu Dec 9 05:12:42 2010"; DateTime time = Convert.ToDateTime(re); Co

我有一个简短的程序,可以将一个字符串从一个简单的字符串转换为日期和时间格式

但是,由于字符串的顺序,系统似乎无法识别该字符串,无法将其转换为日期-时间格式。应该转换的字符串是这样一个示例:“Thu Dec 9 05:12:42 2010”

已使用
Convert.ToDateTime
方法,但该方法不起作用

有人能告诉我密码吗?谢谢

String re = "Thu Dec  9 05:12:42 2010";

DateTime time = Convert.ToDateTime(re);

Console.WriteLine(time.ToString("dddd, dd MMMM yyyy HH:mm:ss"));

通常有必要给它一个关于您期望的特定模式的提示:

编辑:双空格是一种痛苦,因为
d
无法处理它

DateTime time = DateTime.ParseExact(re.Replace("  "," "),
     "ddd MMM d hh:mm:ss yyyy", CultureInfo.CurrentCulture);
看看

看看这个

DateTime time = Convert.ToDateTime("2010, 9, 12, 05, 12, 42"); 

Console.WriteLine(time.ToString("dddd, dd MMMM yyyy HH:mm:ss")); 

不确定字符串输入是否应该有双空格,但您可以将其拉出并使用geoff的答案

re = Regex.Replace(re, @"\s+", " ");
另一个选择是相应地调整他的匹配字符串

DateTime time = DateTime.ParseExact(re, "ddd MMM  d HH:mm:ss yyyy", CultureInfo.CurrentCulture);

如果您没有检查
TryParseExact
的结果,您可能假设成功-在这种情况下,您应该使用
ParseExact
而不是
TryParseExact
-它会告诉您您的假设是错误的。@JavaNoob-您需要确保输入字符串与您期望的格式匹配。其他答案/评论中有一些解决方案可以修复您的一些异常(例如@Marc的作弊评论:
re.Replace(“,”)
),它输出无法转换的错误。“System.DateTimeParse.ParseExact(字符串s,字符串格式,DateTimeFormatInfo dtfi,DateTimeStyles样式)”的错误@JavaNoob-hmmm;双重空间是一种痛苦;实际上,我想知道你是否应该简单地通过传递
re.Replace(“,”)
(第一个引号中有两个空格,第二个引号中有一个空格)来作弊,但是如果双空格不适用于10个以上的日期呢?等等“2010年12月11日星期四05:12:42”?谢谢。@javanob-“d”处理两位数字很好;区别在于“dd”要求前导零。即使在使用.replace方法之后,系统也不会重新论证“Thu Dec 9 05:12:42 2010”。请查看另一个用户回答的此网页,该用户成功地获得了完全正确的答案:感谢帮助!
DateTime time = DateTime.ParseExact(re, "ddd MMM  d HH:mm:ss yyyy", CultureInfo.CurrentCulture);