如何在Silverlight中管理客户端和服务器之间的时区差异?
我有一个SL5应用程序和一个表单,其中有一个日期字段。 我用如下代码设置此字段的默认日期:如何在Silverlight中管理客户端和服务器之间的时区差异?,silverlight,timezone,wcf-ria-services,silverlight-5.0,entity-framework-5,Silverlight,Timezone,Wcf Ria Services,Silverlight 5.0,Entity Framework 5,我有一个SL5应用程序和一个表单,其中有一个日期字段。 我用如下代码设置此字段的默认日期: MyDate = System.DateTime.Today; 或 然后使用WCF Ria服务提交数据,将数据保存到数据库中 问题是:如果用户客户端计算机和Web服务器上的时区不同,则日期数据将以不同的值保存 例如,今天是2013年3月3日,当我从表单中保存数据时,在数据库中,数据保存为类似于2013年2月2日23:00:00.,而不是2013年3月3日00:00:00 如何解决此问题?您可以尝试使用
MyDate = System.DateTime.Today;
或
然后使用WCF Ria服务提交数据,将数据保存到数据库中
问题是:如果用户客户端计算机和Web服务器上的时区不同,则日期数据将以不同的值保存
例如,今天是2013年3月3日,当我从表单中保存数据时,在数据库中,数据保存为类似于2013年2月2日23:00:00.,而不是2013年3月3日00:00:00
如何解决此问题?您可以尝试使用
MyDate = DateTime.UtcNow
它会将utc时间返回到服务器,然后您可以将所有日期时间存储为utc,或者在保存到数据库之前对其进行操作(因此它将保存为服务器的本地时间)您可以尝试使用
MyDate = DateTime.UtcNow
它会将utc时间返回到服务器,然后您可以将所有日期时间存储为utc,或者在保存到数据库之前对其进行操作(因此它将保存为服务器的本地时间)除了时区差异之外,客户端和服务器之间还可能存在实际日期值差异 出于这个原因,我认为您应该每次都从服务器获取日期,或者您应该从客户端和服务器获取应用程序启动的时间,并找出时间间隔的差异。然后,您应该通过将差异添加到本地日期值来计算服务器日期时间
对于时区差异,您也应该始终使用UTC格式,但您当然应该以本地时区格式向用户显示值。除了时区差异,客户端和服务器之间还可能存在实际日期值差异 出于这个原因,我认为您应该每次都从服务器获取日期,或者您应该从客户端和服务器获取应用程序启动的时间,并找出时间间隔的差异。然后,您应该通过将差异添加到本地日期值来计算服务器日期时间 对于时区差异,您也应该始终使用UTC格式,当然,您应该以本地时区格式向用户显示值