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

标签 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 转换为 时“-”不是有效字符>日期时间

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

最佳答案

您的问题不在于 -。没有什么不妥。但是您似乎使用小写字母 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

关于C# 将 YYYY-MM-DD 转换为 MM/DD/YYYY ("-"TO "/"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920828/

相关文章:

c# - 如何找出合并变更集的源分支?

c# - 有没有一种方法可以创建一个类或匿名对象以在方法内部的 Generic <> 中使用?

c# - 去除图像周围的黑色边框

python - 如何将系列值添加到日期/日期时间对象?

c# - 跨线程UI组件调用

c# - 在 Visual Studio 2010 中的条件断点中使用元组

PHP - 将多个变量格式化为 mysql DATETIME 格式

python - 计算 Pandas 数据框中的年龄

Python - 给定一个时区感知日期时间对象,我如何获得时区天真的 UTC 日期时间对象?

datetime - 将 JavaScript DateTime 转换为没有毫秒的 UTC