簡體   English   中英

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

[英]C# - Convert.ToDateTime() where Year is not specified in the Date

我想轉換如下表示的日期列表:

  • 6月6日
  • 9 月 18 日
  • 11 月 2 日
  • 2月29日

日期本身並沒有指定年份,因此當我嘗試使用Convert.ToDateTime()解析它們時,假定為當前年份( 2021 )。 如何將這些日期指定為不同的年份 假設我想指定這些日期中的每一個都是從2020開始的。 如何在轉換中指定它? 這是我會使用CultureInfo的地方嗎?

您可以解析ParseExact )提供的text 唯一可能的問題是閏年2 月 29 日

private static DateTime MyConvert(string text, int year = 0) {
  return DateTime.ParseExact(
    $"{(year <= 0 ? DateTime.Today.Year : year)} {text}", 
    "yyyy MMMM d", 
    CultureInfo.InvariantCulture);
}

演示:

  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 = "September 18";
int desiredYear = 2008;

DateTime date = 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM