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() ,如果它不能从相同的字符串中派生日期它输出。

4

5 回答 5

7

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

IFormatProvider有点像红鲱鱼。你通常会通过:

  • Thread.CurrentThread.Culture, 如果您正在解析用户输入的日期,那么您应该何时遵守用户的日期偏好
  • 或者CultureInfo.InvariantCulture,如果您正在解析程序提供的日期,那么您的行为不应依赖于用户设置的首选项
于 2010-07-30T18:23:21.110 回答
2

采用d.ToString("MM/dd/yyyy")

有关更多选项,请查看http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

编辑:读错了

使用 DateTime.Parse() 将字符串解析为日期时间。 http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

您还可以使用 DateTime.TryParse 来查看字符串是否能够先转换为日期。 http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx

或者,您也可以使用 Convert.ToDateTime()

于 2010-07-30T18:19:29.543 回答
1

如果您希望在将 DateTime 变量发送到字符串后将其返回,请省去麻烦,只需缓存或将范围内的实际 DateTime 变量传递到您以后需要的任何地方,而不必费心将文本转换回 DateTime 类。

抱歉,我刚刚意识到这不能满足您的要求,所以您正在寻找的是:

DateTime.ParseExact(someDateTime, "the format string you used to .tostring generating the string", null);
于 2010-07-30T18:21:36.847 回答
1

Convert.ToDateTime("07/30/2010");

于 2010-07-30T18:23:53.150 回答
1

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

    DateTime yourStringConverted = Convert.ToDateTime( yourString );
于 2010-07-30T18:25:27.370 回答