因此,我从后端api返回一个日期值。
这是我的模型:
public class Sales {
....
public DateTime DateCreated {get;set;}
}
我把它从我的房间退了回来 Controller
:
[System.Web.Http.HttpGet]
public async Task<Sales> GetSales() {
.....
Sales s = await GetSalesForTheUser();
return s;
}
这个 DateTime
属性返回的值 Controller
他错过了 Z
最后。
返回值为: 2021-07-27T05:23:41.937
这是错误的,因为当我在javascript中解析它时,它被视为本地日期时间。当我加上 Z
最后( 2021-07-27T05:23:41.937Z
)那么这是对的。javascript的日期解析为我提供了正确的值。
如何从后端(c#)修复正确的解析值?
3条答案
按热度按时间qlvxas9a1#
我建议使用newtonjson:
将包添加到项目中
您可以通过向startup.cs添加一些配置来实现这一点:
e1xvtsh32#
听起来问题出在datetime对象的范围内
Kind
,而不是序列化。如果
DateTime.Kind
要么Local
或Unspecified
,在iso8601中将其序列化将忽略时区信息(在您的示例中,z表示utc)。要解决此问题,请首先尝试指定
DateTime
在返回数据之前。请参见以下内容:https://docs.microsoft.com/en-us/dotnet/api/system.datetime.specifykind?view=net-5.0.如果这样做有效,请检查您的服务,并查看您是否正确解释返回的数据以填充属性
Sales.DateCreated
,并确保这是utc格式。ibrsph3r3#
如果要在后端对其进行更改,请在sales类中创建另一个属性,如string和
public string DateCreatedFormated => DateCreated.ToString(format);
其中“格式”是本文中的一个。我建议使用“u”格式。