我将使用ASP.NET与WebApi(Rest)和AngularJS。如果我从客户端(Angular)发送DateTime对象到服务器(C#),则会收到失真的时间(-2小时),这是由于时区不同造成的。因此,我决定使用Automapper。
我的当前代码如下:
AutoMapperConfiguration.cs:
public class AutoMapperConfiguration
{
public void Configure()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<DateTime, DateTime>().ConvertUsing<UtcToLocalConverter>();
});
}
}
UtcToLocalConverter.cs:
public class UtcToLocalConverter : AutoMapper.ITypeConverter<DateTime, DateTime>
{
public DateTime Convert(DateTime source, DateTime destination, ResolutionContext context)
{
var inputDate = source;
if (inputDate.Kind == DateTimeKind.Utc)
{
return inputDate.ToLocalTime();
}
return inputDate;
}
}
Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
new AutoMapperConfiguration().Configure();
//...some more stuff...
}
}
我希望从客户端收到的所有DateTime类型的对象都能自动转换,但是使用这段代码却没有实现。我做错了什么?有人可以帮助我解决这个问题吗?
提前感谢。
inputDate.Kind
包含的值吗?我认为它是DateTimeKind.Unspecified
。 - Denis Krasakov