无法在 C# 中解析“2020 年 9 月 4 日”或“2020 年 9 月 4 日”日期字符串

Posted

技术标签:

【中文标题】无法在 C# 中解析“2020 年 9 月 4 日”或“2020 年 9 月 4 日”日期字符串【英文标题】:Not able to parse "Sept 4, 2020" or "sept 4, 2020" date string in C# 【发布时间】:2021-07-05 02:21:50 【问题描述】:

我用过

DateTime.Parse
DateTime.TryParse
DateTime.TryParseExact
DateTime.ParseExact

没有任何工作。请帮忙

【问题讨论】:

原因是九月的缩写是Sep而不是Sept,至少在我所知道的文化中。你从哪来?因此,您要么需要使用 CultureInfoSept,要么将其替换为 Sep 可以为月份指定自定义名称,请查看此帖子:***.com/questions/2253881/… 【参考方案1】:

原因是九月的缩写是Sep 而不是Sept,至少在我所知道的文化中是这样。你从哪来?因此,您要么需要在其 Sept 的位置使用 CultureInfo,要么在输入中将其替换为 Sep

更好的(比替换)选项是创建自定义CultureInfo

CultureInfo myCulture = (CultureInfo)CultureInfo.InvariantCulture.Clone();
myCulture.DateTimeFormat.AbbreviatedMonthNames = GetCustomAbbreviatedMonthNames();
string[] dates =  "Sept 4, 2020", "sept 4, 2020";
string[] formats = "MMM d, yyyy";
foreach (string s in dates)
    Console.WriteLine(DateTime.TryParseExact(s, formats, myCulture, DateTimeStyles.None, out DateTime dt) ? $"Valid<dt>" : $"invalid<s>");

static string[] GetCustomAbbreviatedMonthNames()

    string[] template = CultureInfo.InvariantCulture.DateTimeFormat.AbbreviatedMonthNames;
    // replace the september but also you might want to do it with the other months as well
    template[8] = "Sept";
    return template;

输出:

Valid<04.09.2020 00:00:00>
Valid<04.09.2020 00:00:00>

【讨论】:

成功了。真的很感谢你的回复@Tim【参考方案2】:

您可以在 C# 中查看有关日期的其他帖子:Date Format in Day, Month Day, Year

您也可以阅读:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

尝试使用:

string date = DateTime.Now.ToString("MMM dd, yyyy");

输出将是

截至今天:

Apr 09, 2021

这里是关于 C# 中日期格式的完整指南: https://www.c-sharpcorner.com/blogs/date-and-time-format-in-c-sharp-programming1

【讨论】:

这会将日期转换为字符串,而不是请求的其他方式。另外,它会给出完整的月份名称,而不是 4 个字母的缩写 我编辑了结果的答案

以上是关于无法在 C# 中解析“2020 年 9 月 4 日”或“2020 年 9 月 4 日”日期字符串的主要内容,如果未能解决你的问题,请参考以下文章

聚焦乌镇用户大会,六大专场深入研讨分布式架构转型!

乌镇用户大会 | 擎创夏洛克AIOps智慧运营平台全新发布,点亮数字化转型之路

图像无法在 asp webapp (c#) 中解析

原版MacOs Big Sur 11.0 Beta 6 黑苹果原版镜像 纯镜像 支持白苹果安装

无法在 asp mvc C# 中获取 Json 数据解析

在 C# 中解析 Json 字符串