C# 为什么.NET将UTC日期更改为服务器时区?

C# 为什么.NET将UTC日期更改为服务器时区?,c#,.net,angularjs,date,datetime,C#,.net,Angularjs,Date,Datetime,我有一个AngularJS应用程序,它将UTC格式的日期发布到.NET控制器: CreateEvent: function (event) { var event_date = moment.utc(new Date(event.event_date)).format(); return $http({ url: '/test/CreateEvent/', method: "POST",

我有一个AngularJS应用程序,它将UTC格式的日期发布到.NET控制器:

CreateEvent: function (event) {

        var event_date = moment.utc(new Date(event.event_date)).format();

        return $http({
            url: '/test/CreateEvent/',
            method: "POST",
            data: { event_date: event_date}
        });

    }
public JsonResult CreateEvent(@event evt, int eventOffset)
    {

        DateTime eventDate = evt.event_date;

        ...
    }
如果我将日期2016年7月4日08:00放在event.event_date中,则矩会将其转换为“2016-07-03T22:00:00Z”,并将其发布到服务器

下面是我的.Net控制器的一个片段:

CreateEvent: function (event) {

        var event_date = moment.utc(new Date(event.event_date)).format();

        return $http({
            url: '/test/CreateEvent/',
            method: "POST",
            data: { event_date: event_date}
        });

    }
public JsonResult CreateEvent(@event evt, int eventOffset)
    {

        DateTime eventDate = evt.event_date;

        ...
    }

我在第一行设置了一个断点,evt.event_日期包含2016年7月4日08:00的日期。我的服务器正在GMT+10时区运行。为什么要将日期转换为当前时区?如何停止此操作?

我认为一个好的捷径是将日期时间转换为具有明确格式的字符串。服务器端必须记住明确的格式

我理解你的问题。JSON对象的date属性只是简单地被转换,而不考虑数据库和存储方式,甚至还没有达到在数据库中存储的程度。这一定与序列化问题有关

这是一篇关于日期的好文章:-

evt.event\u date.ToUniversalTime()
非常感谢!但是,当我从数据库中检索时,为什么日期没有转换为GMT+10?我认为javascript会自动将日期转换为当前时区?取决于您如何存储/加载数据库中的信息-这与javascript有何关系?另外,您使用的是
moment
库,它的行为与内置的javascript日期处理不同。计算机在内部以UTC的数字形式存储数据。输入和输出在网络库中自动从本地时区设置转换为UTC。东部标准时间下午12:00(-5)存储为UTC下午5:00。如果在加利福尼亚州下午12:00(-8)采集数据并输入到纽约市的计算机中,则将错误地输入为UTC下午5:00。通过时区设置校正,输入时间为UTC下午2:00。应始终使用收集数据的时区设置输入数据。如果数据是在同一时区采集的,则不需要PC设置时区。计算机数据库驱动程序会在utc时间将数据传输到远程数据库,因此,如果计算机和数据库位于不同的时区,则在utc时间采集数据时,会将数据输入数据库。