转换自定义格式的日期

时间:2018-02-07 12:56:30

标签: c# datetime format customization

我想知道是否可以将自定义格式的DateTime转换为更标准化的内容。

我在字符串中有两种类型的日期格式。

string Date1 = @"06.12.2015 18.00";
string Date2 = @"1944-09-29";

我希望将两者转换为这种格式:

yyyy-MM-ddThh:mm:ssZ

我该怎么做?

我试过

DateTime testdate = DateTime.ParseExact(Date1, 
                                       "yyyy-MM-ddThh:mm:ssZ", 
                                        CultureInfo.InvariantCulture);

但没有运气。

编辑:Thsi问题被标记为可能与StackOverflow中的另一个条目重复。正如Vadim Yarovikov在下面的评论中提到的那样,这里的不同之处在于两个问题。 " 1)到目前为止的分析值和2)将日期转换为所需的格式。"

1 个答案:

答案 0 :(得分:3)

您可以在一次DateTime.ParseExact电话中提供两种格式:

string[] tests = new string[] {
  @"06.12.2015 18.00", 
  @"1944-09-29" 
};

var result = tests
  .Select(item => DateTime.ParseExact(
     item,
     new string[] { "d.M.yyyy H.m", "yyyy-M-d" },
     CultureInfo.InvariantCulture, 
     DateTimeStyles.AssumeLocal))
  .Select(date => date.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture));

Console.WriteLine(string.Join(Environment.NewLine, result));

结果:

2015-12-06T18:00:00Z
1944-09-29T12:00:00Z

旁注:我认为实际目标格式应为"yyyy-MM-ddTHH:mm:ssZ"(请注意HH而不是hh)否则它无法区分 6:00AM6:00PM (18:00)