Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET成员身份返回日期时间,种类设置为本地_.net_Datetime_Utc - Fatal编程技术网

ASP.NET成员身份返回日期时间,种类设置为本地

ASP.NET成员身份返回日期时间,种类设置为本地,.net,datetime,utc,.net,Datetime,Utc,我有一个使用ASP.NET默认成员资格提供程序的MVC3项目。我试图在查看页面上显示用户的详细信息。当我这样做的时候 MembershipUser user = Membership.GetUser(id); 要获取我将要显示的用户,所有DateTimes(CreationDate、LastActivityDate)都将Kind属性设置为Local 所有这些日期都以UTC时间保存在SQL Server数据库中,那么为什么它们作为本地日期进入MVC呢?因为我希望服务器的时间是UTC,所以我的时区

我有一个使用ASP.NET默认成员资格提供程序的MVC3项目。我试图在查看页面上显示用户的详细信息。当我这样做的时候

MembershipUser user = Membership.GetUser(id);
要获取我将要显示的用户,所有DateTimes(CreationDate、LastActivityDate)都将Kind属性设置为Local

所有这些日期都以UTC时间保存在SQL Server数据库中,那么为什么它们作为本地日期进入MVC呢?因为我希望服务器的时间是UTC,所以我的时区转换被搞乱了


您是否可以设置从GetUser函数返回的用户的DateTimeKind.Utc中包含DateTimes?

只需使用
myDate.ToUniversalTime()

如果您的意思是DateTime中的值实际上是UTC时间,但种类设置为Local,则必须将其转换为UTC

var myUtcDate = DateTime.SpecifyKind(myDate, DateTimeKind.Utc);
不幸的是,这是.NETDateTime类和SQL的一般问题,而不是MVC特有的问题。我不知道用DateTimeKind.UTC设置以UTC格式获取DateTime的任何方法

你可能想读约翰·斯凯茨关于约会时间的咆哮

如果您需要经常使用它,一个选项是创建一个扩展方法来实现这一点

public static class DateTimeExtensions {
    public static DateTime MakeUtcKind(this DateTime dateTime) {
        return DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);
    }
}
然后您可以简单地执行以下操作:

var createDate = Membership.GetUser(id).CreationDate.MakeUtcKind();

只需使用myDate.ToUniversalTime()

如果您的意思是DateTime中的值实际上是UTC时间,但种类设置为Local,则必须将其转换为UTC

var myUtcDate = DateTime.SpecifyKind(myDate, DateTimeKind.Utc);
不幸的是,这是.NETDateTime类和SQL的一般问题,而不是MVC特有的问题。我不知道用DateTimeKind.UTC设置以UTC格式获取DateTime的任何方法

你可能想读约翰·斯凯茨关于约会时间的咆哮

如果您需要经常使用它,一个选项是创建一个扩展方法来实现这一点

public static class DateTimeExtensions {
    public static DateTime MakeUtcKind(this DateTime dateTime) {
        return DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);
    }
}
然后您可以简单地执行以下操作:

var createDate = Membership.GetUser(id).CreationDate.MakeUtcKind();

这实际上会将他已经存在的UTC时间再次转换为UTC时间,并打乱他的日期conversions@Kenneth-也许我误解了,但他似乎在抱怨他在本地时间而不是UTC。是的,我也在考虑这个问题。我认为这个值实际上是UTC,但它是本地的。所以我想他问的是,如何在不影响价值的情况下改变种类?无论如何,OP可能需要一些澄清。嗯,太好了!实际上,我必须查找
指定的索引
。我的印象是,它实际上也转换了价值。我错了,没错。时间是正确的UTC值,但种类设置为本地,因此当我尝试转换时,会出现错误。我尝试的第一件事是自己设置种类
MembershipUser=Membership.GetUser(id);user.CreationDate=DateTime.SpecifyKind(user.CreationDate,DateTimeKind.Utc)但这甚至无法编译,因为CreateDate是只读的。这实际上会将他已经存在的UTC时间再次转换为UTC时间,并弄乱他的日期conversions@Kenneth-也许我误解了,但他似乎在抱怨他在本地时间而不是UTC。是的,我也在考虑这个问题。我认为这个值实际上是UTC,但它是本地的。所以我想他问的是,如何在不影响价值的情况下改变种类?无论如何,OP可能需要一些澄清。嗯,太好了!实际上,我必须查找
指定的索引
。我的印象是,它实际上也转换了价值。我错了,没错。时间是正确的UTC值,但种类设置为本地,因此当我尝试转换时,会出现错误。我尝试的第一件事是自己设置种类
MembershipUser=Membership.GetUser(id);user.CreationDate=DateTime.SpecifyKind(user.CreationDate,DateTimeKind.Utc)