假设我有字符串" 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
答案 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