Vik*_*ana 3 javascript c# asp.net-mvc datetime entity-framework
在我们的应用程序中,我们在DataBase中保存UTC DateTime.客户端(javascript)正在本地TimeZone中发送日期时间,在控制器级别,我们将其转换为UTC时间,然后在数据库中保存日期.
客户端和服务器都位于不同的时区.
我们从UTC使用实体框架中的数据库中获取日期
DateTime.SpecifyKind(_CreatedDate, DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
那么我们是否应该再次将DateTime转换为控制器上的本地DateTime,或者我们应该在客户端处理所有DateTime转换逻辑.
将DateTime实例发送到服务器时,应尽早将转换转换为UTC.在这种情况下,客户端和您的客户端是javascript,您可以使用方法toUTCString.如果你正在使用momentjs,你可以使用utc.
DateTime从服务器接收实例时,转换到本地时间应尽可能晚.创建时,请确保持久日期/检索日期为UTC.同样,客户端应该将它们转换为本地日期时间实例.
最后使用ISO8601格式在客户端和服务器之间发送所有datetime实例.Momentjs,javascript的日期对象,json.net都可以做到这一点.这样可以确保不会丢失任何内容,也不会引入文化特定的错误.
至于为什么它应该在客户端处理非常简单,最容易在那里做.只有客户真正知道它的时区,这通常很难在服务器端"准确地猜测".不这样做的唯一原因是如果你想用他们的个人资料存储用户时区信息,但即使这样也会变得非常棘手(如果用户旅行或移动位置等会发生什么).
至于如何持久化,您可以使用DateTime类型或具有偏移类型的DateTime(真正的类型名称取决于您正在使用的RDBM).您选择哪一个应该取决于在保存时知道偏离utc是否很重要.到目前为止,我没有必要这样做,但也许这对你很重要.它对实际时间点没有影响,因为DateTime应表示UTC时间点,而偏移量应表示具有偏移量的本地时间以返回到UTC时间点.
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |