我使用web api angularjs在c#中使用id来获取fetch数据。但是这个代码在我的本地工作得非常好,并且在服务器上收到错误,例如“字符串未被识别为有效的DateTime”。任何人都知道如何解决这个错误。下面列出了我在c#中的方法。
这是我的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 });
}
在我的数据库和类中,Date filed数据类型是字符串。所以任何人都知道如何解决这个问题。
答案 0 :(得分:0)
如果您无法在数据库中更改数据类型,那么您应该使用DateTime.ParseExact
而不是Convert.ToDateTime
在你的情况下:
DateTime dateTime = DateTime.ParseExact(s.Date,"dd/MM/yyyy", CultureInfo.InvariantCulture);
<强>更新强>
一旦你获得DateTime
(无论是通过使用上述内容还是最好更改数据库中的类型,你都可以获得任何你喜欢的格式的字符串。
例如:
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");
});