C# - 转换DateTime格式yyyy-MM-dd

时间:2011-07-20 03:03:55

标签: c# ssis datetime-format

我正在尝试将DateTime格式从“dd / MM / yyyy”更改为“yyyy-MM-dd”

这就是我现在所拥有的:

DateTime date = Convert.ToDateTime("31/01/2000");
Console.WriteLine(date);

String format = "yyyy-MM-dd";
String dateStr = date.ToString(format);
Console.WriteLine(dateStr);

DateTime parsedDate = DateTime.ParseExact(dateStr, format, CultureInfo.InvariantCulture);
Console.WriteLine(parsedDate);

我得到了这些结果:

31/01/2000 12:00:00 AM
2000-01-31
31/01/2000 12:00:00 AM

最终,我希望最后的结果是2000-01-31

编辑:只是为了澄清我的实际目标。我正在使用SSIS将DT_DATE(dd / MM / yyyy)字段转换为另一个DT_DATE(yyyy-MM-dd)字段。所以我想我会使用脚本组件。 这意味着我无法将其转换回String。

EDIT ++答案:

对不起大家,我想我已经弄糊涂了这个问题,但我现在可以自己回答。

我的目标是将源字段DT_DATE(dd / MM / yyyy)转换为SSIS中的dest字段DT_DATE(yyyy-MM-dd)。

我首先尝试使用'替换原始字段'和(DT_DBDATE)字段使用派生列。这不起作用,因为它给了我原始的来源。

所以我尝试使用脚本组件导致我的问题的顶部,并且很多混乱。它根本不起作用。

解决方案是通过“添加新列”并给它(DT_DBDATE)字段来使用派生列。 DT_DBDATE的原始格式实际上是yyyy-MM-dd。

1 个答案:

答案 0 :(得分:19)

我认为你只需要了解ToString重载:

string fromFormat = "dd/MM/yyyy"; 
string toFormat = "yyyy-MM-dd";

DateTime newDate = DateTime.ParseExact("15/01/2001", fromFormat, null);

Console.WriteLine(newDate.ToString(toFormat));