1

我有一个格式为“dd.MM.yyyy”的日期字符串(例如“01.02.2004”),并希望使用String.Format(...)DateTime.ParseExact将其转换为“yyyy-MM-dd” (...)或其他。其实我只得到例外。所以以下代码的使用不起作用:

String dateString = "01.02.2004";
datestring = String.Format("{yyyy-MM-dd}", dateString);

那有什么问题?有替代品 DateTime.ParseExact(..)吗?

4

5 回答 5

4

您需要将其解析为DateTime,然后ToString()以不同的格式调用:

DateTime date = DateTime.ParseExact(dateString, "dd.MM.yyyy", CultureInfo.InvariantCulture);
date.ToString("yyyy-MM-dd")
于 2013-02-11T14:40:54.130 回答
2

您需要先创建一个 Datetime 对象。

尝试类似:

DateTime t = DateTime.parse("01.02.2004");
String result = t.ToString("{yyyy-MM-dd}", CultureInfo.InvariantCulture);
于 2013-02-11T14:42:45.973 回答
1

您必须DateTime使用适当的将其转换为第一个CultureInfo

String dateString = "01.02.2004";
var deCulture = System.Globalization.CultureInfo.CreateSpecificCulture("de-DE");
DateTime dt = DateTime.Parse(dateString, deCulture);
dateString = dt.ToString("yyyy-MM-dd"); 

演示

于 2013-02-11T14:42:05.723 回答
1
String dateString = "01.02.2004";
dateString = DateTime.ParseExact(dateString, "dd.MM.yyyy", CultureInfo.InvariantCulture)
                     .ToString("yyyy-MM-dd");

您的尝试有什么问题是:

  • 使用格式字符串时,项目需要以{0:yyyy-MM-dd}. 0:是必要的。
  • 当您使用 string.Format() 时,变量是 a string,因此格式字符串yyyy-MM-dd在那里没有意义。
于 2013-02-11T14:42:50.140 回答
1

您正在将字符串解析为 String.Format 的参数?你对它有什么期望?

你应该这样做:

try
{
 var date = DateTme.ParseExact("yyyy.MM.dd", dateString, CultureInfo.InvariantCulture);
 var result = date.ToString("yyyy-MM-dd");
}
catch(Exception e) { /* ... */}
于 2013-02-11T14:43:11.383 回答