ASP.NET成员身份返回日期时间,种类设置为本地
我有一个使用ASP.NET默认成员资格提供程序的MVC3项目。我试图在查看页面上显示用户的详细信息。当我这样做的时候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,所以我的时区
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)但是它甚至不会编译,因为CreateDate是只读的。