如何在c#中将数字转换为dd / mm / yyyy格式?

时间:2017-10-16 08:02:32

标签: c# datetime

假设我有字符串" 20171013",现在我想将其转换为13-10-2017,它也应该在字符串中。此外,我已将这些字符串存储在列表的属性中。是否可以使用foreach循环转换所有这些字符串数量的属性?

这是我正在处理的代码

calendarResponse.AgendaOptions
 .ForEach(a => a.AppointmentDate = 
         DateTime.ParseExact(a.AppointmentDate, "ddMMyyyy", 
                 CultureInfo.InvariantCulture).ToString());

此处,AppointmentDate的日期为字符串格式,如" 20171013"

我收到了错误:

  

日历System.Globalization.GregorianCalendar

中不支持字符串表示的DateTime

2 个答案:

答案 0 :(得分:6)

错误原因是正确的格式应为yyyyMMdd而不是ddMMyyyy。同时在ToString中应用格式以获得所需的输出格式:

var data = new List<string> { "20171013" };
var result = data.Select(item => DateTime.ParseExact(item, "yyyyMMdd", CultureInfo.InvariantCulture)
                                         .ToString("dd-MM-yyyy", CultureInfo.InvariantCulture)).ToList();

对于给定的代码:

calendarResponse.AgendaOptions.ForEach(a => 
    a.AppointmentDate = DateTime.ParseExact(a.AppointmentDate, "yyyyMMdd", CultureInfo.InvariantCulture)
                                .ToString("dd-MM-yyyy", CultureInfo.InvariantCulture));

支持DateTime格式see documentation

答案 1 :(得分:0)

另一种方法就是这样

        string s = "20171013";
        string year =  s.Substring(0,4);
        string month  = s.Substring(4, 2);
        string day  = s.Substring(6, 2);
        string date = day+'-'+month+'-'+year; 
        Console.WriteLine(date);

结果13-10-2017