使用C#AutoMapper将DateTime UTC转换为本地UTC
我将ASP.NET与WebApi(Rest)和AngularJS一起使用。如果我将DateTime对象从客户端(角度)发送到服务器(C#),由于时区的原因,我会收到扭曲的(-2小时)日期。所以我决定使用Automapper 我当前的代码如下所示: AutoMapperConfiguration.cs:使用C#AutoMapper将DateTime UTC转换为本地UTC,c#,asp.net,angularjs,datetime,automapper,C#,Asp.net,Angularjs,Datetime,Automapper,我将ASP.NET与WebApi(Rest)和AngularJS一起使用。如果我将DateTime对象从客户端(角度)发送到服务器(C#),由于时区的原因,我会收到扭曲的(-2小时)日期。所以我决定使用Automapper 我当前的代码如下所示: AutoMapperConfiguration.cs: public class AutoMapperConfiguration { public void Configure() { var config = new
public class AutoMapperConfiguration
{
public void Configure()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<DateTime, DateTime>().ConvertUsing<UtcToLocalConverter>();
});
}
}
我想让我从客户机接收到的DateTime类型的所有对象自动转换,但这段代码没有这样做。我做错了什么?有人能帮我解决这个问题吗
提前感谢。我注意到,在从旧版本(我使用的是非常旧的版本)更新后,AutoMapper发生了变化。即使使用DateTimes的映射配置,从AutoMapper映射的对象最终也会在自定义转换器的Convert方法之后将日期转换为UTC时间。查看发行说明可能会有所帮助。我还没有找到防止这种情况发生的办法 此外,请检查是否正在使用您的配置设置 创建配置对象后是否需要调用initialize
AutoMapper.Mapper.Initialize(cfg);
所以
public void Configure()
{
var config=new-MapperConfiguration(cfg=>
{
CreateMap().ConvertUsing();
});
AutoMapper.Mapper.Initialize(cfg);
}
您是否查看了调试中inputDate.Kind
包含的值?我想它是DateTimeKind.Unspecified
您的应用程序是从不同的位置使用的吗?如果是,那么它是否会根据当前用户的本地时间显示时间?我希望该功能会自动调用。从包含dateTime对象的客户端获得任何响应后,不会调用它。不,我的应用程序不是从不同的位置使用的……看看这个[链接][,这会有所帮助。
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
new AutoMapperConfiguration().Configure();
//...some more stuff...
}
}
AutoMapper.Mapper.Initialize(cfg);
public void Configure()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<DateTime, DateTime>().ConvertUsing<UtcToLocalConverter>();
});
AutoMapper.Mapper.Initialize(cfg);
}