2010-07-30 28 views
1

我有一个字符串我需要转换回日期。我可以调用.ToString(“yyyyMMdd”)并获取我想要的字符串。我的问题是如何将其转换回日期?我正在尝试像下面这样没有运气。来自字符串帮助的日期。我可以转换为我想要的字符串,但我不能转换回

DateTime d; 
var formatInfo = new DateTimeFormatInfo {ShortDatePattern = "yyyyMMdd"}; 
if (DateTime.TryParse(details.DetectionTime.Date, formatInfo, DateTimeStyles.None, out d)) 
{ 
    lit.Text = d.ToShortTimeString(); //would like 07/30/2010 as the text 
} 

我从来没有使用DateTimeFormatInfo之前,如果不明显。有人能指引我走向正确的方向吗?我知道我可以使用子字符串和创建一个新的DateTime(Y,M,D)等...我只是想知道,因为C#解释.ToString()正确,如果它不能从一个字符串中得到一个日期它输出。

+0

@Hababnetlek:请不要在标题中重复标签中的“C#”标签。 – 2010-07-30 18:24:22

+0

“TryParse”的简单版本不需要'DateTimeFormatInfo',我通常会推荐它们。 – 2010-07-30 18:36:16

回答

7

DateTime.ToString("yyyyMMdd")的反向是DateTime.TryParseExact,将"yyyyMMdd"作为格式字符串传递。

IFormatProvider是有点红鲱鱼。通常你将会通过其中:

  • Thread.CurrentThread.Culture,如果你解析由用户输入的日期,时,你应该服从用户的喜好日期
  • 或者CultureInfo.InvariantCulture,如果你分析所提供的日期一个程序,当你的行为不应该取决于用户设置的偏好时
+0

示例: http://msdn.microsoft.com/en-us/library/ms131044.aspx – Zippit 2010-07-30 18:26:56

1

如果你把它发送到一个字符串后要DateTime变量后面,保存自己的麻烦,只是缓存或通过实际的日期时间变量左右范围来无论你以后需要它,不要打扰文本转换回一个DateTime类..

对不起,我才意识到这并不能回答你的要求,所以你要找的是什么:

DateTime.ParseExact(someDateTime, "the format string you used to .tostring generating the string", null); 
1

Convert.ToDateTime(“07/30/2010”);

1

我假设你的意思是将字符串转换为DateTime格式。如果是这样的话使用:

DateTime yourStringConverted = Convert.ToDateTime(yourString);