C#将YYYY-MM-DD转换为MM / DD / YYYY(“ - ”TO“/”)

时间:2016-03-10 15:35:14

标签: c# datetime

嘿,我遇到了麻烦。

string record = el.InnerText;
var result1 = parseString(record);
var StartDate = string.Join("", result1.ConvertAll(r => string.Format("{0}", r)).ToArray());
//DateTime strStartDate = DateTime.ParseExact(StartDate, "mm-dd-yyyy", CultureInfo.InvariantCulture);
var EndDate = string.Join("", result1.ConvertAll(r => string.Format("{1}", r)).ToArray());
//DateTime strEndDate = DateTime.ParseExact(EndDate, "mm-dd-yyyy", CultureInfo.InvariantCulture);

这是parseString函数:

private static List<string[]> parseString(string input)
    {
        var pattern = @"Start\s+Date:\s+([0-9-]+)\s+End\s+Date:\s+([0-9-]+)\s+(?:Warranty\s+Type:\s+\w+\s+)?Status:\s+(\w+)\s*";
        return Regex.Matches(input, pattern).Cast<Match>().ToList().ConvertAll(m => new string[] { m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value });
    }

DateTimes无效,因为我猜测在将string转换为DateTime时,“ - ”不是有效字符。

我尝试了record = record.Replace("-", "/")但最终弄乱了我的字符串并且它停止显示(来自html页面)。

2 个答案:

答案 0 :(得分:7)

问题不在于-。没有什么不妥。但您似乎使用小写字母m代替大写字母M来表示您的月份:

//DateTime strStartDate = DateTime.ParseExact(StartDate, "mm-dd-yyyy", CultureInfo.InvariantCulture);

(另请注意,您将其放在评论中 - 使其不太明显!)

将其更改为:

//Note the capital MM
DateTime strStartDate = DateTime.ParseExact(StartDate, "MM-dd-yyyy", CultureInfo.InvariantCulture);

这就是你收到错误的原因。小写字母m是分钟,而不是月份。要表示月份,请使用大写M

答案 1 :(得分:0)

string res = "2016030";
DateTime d = DateTime.ParseExact(res, "yyyyddMM", CultureInfo.InvariantCulture);
 Console.WriteLine(d.ToString("MM/dd/yyyy"));