C#-Convert.ToDateTime(),其中日期中未指定年份

C#-Convert.ToDateTime(),其中日期中未指定年份,c#,datetime,datetime-conversion,C#,Datetime,Datetime Conversion,我想将日期列表转换为如下所示: 六月六日 九月十八日 十一月二日 二月二十九日 日期本身没有指定年份,因此当我尝试使用Convert.ToDateTime()解析日期时,假定当前年份(2021)。如何将这些日期指定为不同的年份?假设我想指定这些日期中的每一个都是从2020年开始的。我如何在转换中指定它?这是我使用CultureInfo的地方吗?您可以解析(ParseExact)提供的文本;唯一可能的问题是闰年和2月29日: 结果: string[] tests = new string[

我想将日期列表转换为如下所示:

  • 六月六日
  • 九月十八日
  • 十一月二日
  • 二月二十九日
日期本身没有指定年份,因此当我尝试使用
Convert.ToDateTime()
解析日期时,假定当前年份(
2021
)。如何将这些日期指定为不同的年份?假设我想指定这些日期中的每一个都是从2020年开始的。我如何在转换中指定它?这是我使用
CultureInfo
的地方吗?

您可以解析(
ParseExact
)提供的
文本;唯一可能的问题是闰年和2月29日:

结果:

  string[] tests = new string[] {
    "June 6",
    "September 18",
    "November 2",
    "February 29"
  };

  string report = string.Join(Environment.NewLine, tests
    .Select(test => $"{test,-15} => {MyConvert(test, 2000):dd.MM.yyyy}"));

  Console.Write(report);
June 6          => 06.06.2000
September 18    => 18.09.2000
November 2      => 02.11.2000
February 29     => 29.02.2000
一行就可以做到:

string textDate=“9月18日”;
int desiredYear=2008年;
DateTime日期=Convert.ToDateTime(desiredYear.ToString()+textDate);

只需更改年份即可

var input = "June 6";
var converted = DateTime.ParseExact("mmmm d");
var date = new DateTime(DateTime.Today.Year, converted.Month, converted.Day);

新日期时间(年、月、日);以这种方式解析事物时要非常小心;在我的系统上,
DateTime.Parse(“6月6日”)
毫无错误地给出了完全错误的2006-06-01结果
DateTime.Parse(“6月6日”,new CultureInfo(“en-US”))
做了正确的事情,但即使这样,我也不确定自己是否会更愿意用一个固定的月名列表进行解析。
DateTime.ParseExact(date+“2020”,“MMMM d yyyy”,System.Globalization.CultureInfo.InvariantCulture)
var input = "June 6";
var converted = DateTime.ParseExact("mmmm d");
var date = new DateTime(DateTime.Today.Year, converted.Month, converted.Day);