【发布时间】:2021-11-01 16:05:08
【问题描述】:
我有这个日期:" 1 21998",这是 1998 年 2 月 1 日。它的格式有点不正确,因为应该有零而不是空格,但它在我必须处理的一些文本文件中。我不知道如何用 C# 解析它。谁能给我一个线索?
我尝试了以下方法,但没有得到任何结果:
DateTime date;
string input = " 1 21998";
if (DateTime.TryParseExact(input, "ddMMyyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date))
{
Console.WriteLine("1: " + date);
}
else if (DateTime.TryParseExact(input, "ddMMyyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out date))
{
Console.WriteLine("2: " + date);
}
else if (DateTime.TryParseExact(input, "dMyyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date))
{
Console.WriteLine("3: " + date);
}
else if (DateTime.TryParseExact(input, "dMyyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out date))
{
Console.WriteLine("4: " + date);
}
else if (DateTime.TryParseExact(input, " d Myyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date))
{
Console.WriteLine("5: " + date);
}
else if (DateTime.TryParseExact(input, " d Myyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out date))
{
Console.WriteLine("6: " + date);
}
if (DateTime.TryParse(input, out date))
{
Console.WriteLine("7: " + date);
}
else if (DateTime.TryParse(input, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out date))
{
Console.WriteLine("8: " + date);
}
【问题讨论】:
-
您可以在解析字符串之前对其进行处理。从右侧取 4 个字符,然后将左侧部分与空格分开,您将获得所需的部分。然后您可以以可解析的方式连接这些部分或将它们转换为整数并直接创建
DateTime -
你能在尝试解析它们之前将空格替换为零吗?
-
你能给出 2 个符号月份和日期的例子吗?如果它们不包含空格 - 那么用零替换空格并使用
"ddMMyyyy"应该可以解决问题。 -
当然可以先替换空格。但我想知道是否没有办法直接使用
TryParseExact()或TryParse()。