从字符串值解析日期时间

时间:2015-04-15 14:49:01

标签: c# datetime

我在数据库中有如下价值:

04/14
01-15
02/15

我需要将这些值解析为数据时间格式。即使从04/14成为01/04/2014,也没关系。

我尝试过如下操作无法正常工作。

var strDate = "04/14";
var format = "d";
var provider = CultureInfo.InvariantCulture;

var result = DateTime.ParseExact(strDate, format, provider);

1 个答案:

答案 0 :(得分:5)

显然,您的字符串和格式不匹配。

使用DateTime.ParseExact时,您的字符串和格式应与完全匹配。我强烈怀疑你尝试在你的情况下使用"d" standard date and time format这是错误的。此方法将此格式视为一天的单个数字,这不足以解析您的字符串。

您可以使用DateTime.TryParseExact overload将格式作为字符串数组MM-yyMM/yy,其格式为/DateSeparator

DateTime dt;
var formats = new[] {"MM/yy", "MM-yy"};
if(DateTime.TryParseExact(strDate, formats, CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
}

由于您的字符串只有月份和年份部分,因此它的一天部分将是该月的第一天,而时间部分将默认为午夜。