使用C#AutoMapper将DateTime UTC转换为本地UTC

使用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

我将ASP.NET与WebApi(Rest)和AngularJS一起使用。如果我将DateTime对象从客户端(角度)发送到服务器(C#),由于时区的原因,我会收到扭曲的(-2小时)日期。所以我决定使用Automapper

我当前的代码如下所示:

AutoMapperConfiguration.cs:

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);
}