2017-04-15 31 views
-2

我去c#使用web api angularjs在ID使用獲取數據。但是這個代碼在我的本地工作很好,並且在服務器上得到這樣的錯誤'字符串不被識別爲有效的DateTime。'任何人都知道如何解決這是錯誤。下面列出我的方法在C#中。服務器上出現錯誤:「字符串未被識別爲有效的DateTime。」

這是我的API方法:

var ProItemList = db.Promotion_ctc.Where(x => x.pid == Pro.id) 
.Select(i => new ProductItemViewModel 
    { 
    ItemId = i.ItemId, 
    ProductId = i.ProductId, 
    Qty = i.Qty, 
    Rate = i.Rate, 
    Date = i.Date 
    }) 
    .ToList(); 

     ProItemList.ForEach(s => 
      { 
       s.Date = Convert.ToDateTime(s.Date).ToString("MM-dd-yyyy");      
      }); 

    var Details = new 
    { 
     Pro.id, 
     Pro.name, 
    Pro.image_url, 
     ProItemList 
}; 

    return Json(new { data = Details });    
} 

在我的數據庫和一流的提交日期的數據類型爲字符串。所以任何人都知道如何解決這個問題。

+1

你應該使用'DateTime.ParseExact' –

+0

其中n如何使用給我一些提示 – coderwill

+0

你在db中的日期結構是什麼? –

回答

0

如果沒有辦法讓你改變數據類型,在你的分貝日期,那麼,您應該使用DateTime.ParseExact,而不是使用Convert.ToDateTime

你的情況:

DateTime dateTime = DateTime.ParseExact(s.Date,"dd/MM/yyyy", CultureInfo.InvariantCulture); 

更新

一旦得到了DateTime(無論是通過使用上述還是更改db中的類型,都可以獲得任意格式的字符串)
例如:

dateTime.ToString("MM-dd-yyyy"); 

如果你已經改變了你的數據類型,然後你的LINQ會更簡單:

Select(i => new ProductItemViewModel 
{ 
    ItemId = i.ItemId, 
    ProductId = i.ProductId, 
    Qty = i.Qty, 
    Rate = i.Rate, 
    Date = i.Date.ToString("MM-dd-yyyy") 
}) 
.ToList(); 

而且你可以擺脫這樣的:

ProItemList.ForEach(s => 
{ 
    s.Date = Convert.ToDateTime(s.Date).ToString("MM-dd-yyyy");      
}); 
+0

現在我在本地字符串中獲取錯誤未被識別爲有效的DateTime。與你的浪潮一起使用。 – coderwill

+0

很顯然,'s。Date'不在你提到的結構中。這個 - >'var d = DateTime.ParseExact(「21/04/2017」,「dd/MM/yyyy」,CultureInfo.InvariantCulture);'會工作。仔細檢查日期結構。 –

+0

但是使用正確的dbtype要好得多! –

相關問題