如何使用linq将字符串日期时间解析为实际日期时间?

时间:2017-01-16 08:41:13

标签: c# .net linq datetime

我的ExpiryDate是" 10/31/2015 12:00:00 AM"表示MM / dd / YYYY hh:mm:ss AM但它是来自SAP的字符串。如何将其转换为MM / dd / YYYY 下面的代码不工作。错误:

  

" String未被识别为有效的DateTime。"

如何使用linq做到这一点?

var query = deliveriesItemsbypaging.Select(tb => tb.ExpiryDate)
              .AsEnumerable() // Do the rest of the processing locally
              .Select(x => DateTime.ParseExact(x.Split(new char[0])[0], "MM/dd/yyyy", CultureInfo.InvariantCulture));

此博客代码正在运行:

 var r =   DateTime.ParseExact("10/31/2015 12:00:00 AM".Split(new char[0])[0], "MM/dd/yyyy", CultureInfo.InvariantCulture);

5 个答案:

答案 0 :(得分:4)

您可以在此使用DateTime.Parse

var query = deliveriesItemsbypaging.Select(tb => tb.ExpiryDate)
              .AsEnumerable() // Do the rest of the processing locally
              .Select(x => DateTime.Parse(x, CultureInfo.InvariantCulture).Date);

.Date这里只会根据您的需要,在没有时间的情况下为您提供日期。

更新: 如果要获取可枚举的字符串(以特定格式),您可能希望将其重写为

var query = deliveriesItemsbypaging.Select(tb => tb.ExpiryDate)
              .AsEnumerable() // Do the rest of the processing locally
              .Select(x => DateTime.Parse(x, CultureInfo.InvariantCulture).ToString("MM/dd/YYYY"));

答案 1 :(得分:2)

使用DateTime.ParseExact()时使用特定的字符串格式,您需要使用 "M/d/yyyy h:mm:ss tt"格式,下次使用.ToString("MM/dd/yyyy")

List<string> dateTimes = new List<string>();
dateTimes.Add("10/31/2015 12:00:00 AM");
var selectValue = dateTimes.Select(d => d)
       .AsEnumerable()
       .Select(d => DateTime.ParseExact(d, "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy")).ToList();

var r = DateTime.ParseExact("10/31/2015 12:00:00 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

结果:

enter image description here

答案 2 :(得分:1)

您可以尝试这样

var query = deliveriesItemsbypaging.Select(tb => tb.ExpiryDate)
              .AsEnumerable() // Do the rest of the processing locally
              .Select(x => DateTime.ParseExact(x.Split(new char[]{' '})[0], "MM/dd/yyyy", CultureInfo.InvariantCulture));

答案 3 :(得分:1)

var query = deliveriesItemsbypaging
    .Select(tb => tb.ExpiryDate)
    .AsEnumerable() // Do the rest of the processing locally
    .Select(x => DateTime.ParseExact(x, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"));

答案 4 :(得分:1)

以下方法可以将MM / dd / YYYY hh:mm:ss AM格式日期转换为可转换字符串日期

    string DateConverter(string date)
    {
        string[] dmy= date.Split(' ')[0].Split('/');
        string convertedDay = dmy[1] + "/" + dmy[0] + "/" + dmy[2];
        return convertedDay;
    }