Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Design patterns 应捕获哪一层应用程序的日期/时间_Design Patterns - Fatal编程技术网

Design patterns 应捕获哪一层应用程序的日期/时间

Design patterns 应捕获哪一层应用程序的日期/时间,design-patterns,Design Patterns,我想知道在哪里获取日期信息的最佳实践/模式/观点是什么 这会在表示层中,并作为事务元数据的一部分发送到服务器吗?还是在服务器上创建 我的应用程序要求用户在一个国家/地区创建“交易”。其他人应该能够看到交易在另一个国家创建的当地时间 目前,我正在业务逻辑层中捕获日期。我想如果我在数据访问层捕获它,我会得到同样的结果 另一种说法是什么更好: 服务器端 [WebMethod()] 公共事务项保存事务(int ID) { TransactionItem transaction=新建Transaction

我想知道在哪里获取日期信息的最佳实践/模式/观点是什么

这会在表示层中,并作为事务元数据的一部分发送到服务器吗?还是在服务器上创建

我的应用程序要求用户在一个国家/地区创建“交易”。其他人应该能够看到交易在另一个国家创建的当地时间

目前,我正在业务逻辑层中捕获日期。我想如果我在数据访问层捕获它,我会得到同样的结果

另一种说法是什么更好: 服务器端
[WebMethod()]
公共事务项保存事务(int ID)
{
TransactionItem transaction=新建TransactionItem();
transaction.ID=ID;

transaction.TimeRequest=DateTime.Now;//首先,帮你自己一个忙,专门在服务器端处理UTC或“祖鲁时间”中的
DateTime
。一旦进入客户端,处理任何转换

// on the server side
var serverNow = DateTime.UtcNow;
Console.WriteLine(serverNow);

// and on the client side
var myLocalNow = serverNow.ToLocalTime();
Console.WriteLine(myLocalNow);
一般来说,“现在几点了?”的最终裁决者应该是服务器——这是您最直接控制的世界。从客户端的角度看,任何时间都应该从服务器从高处传递的“一个真实时间”转换而来


“当然,这只是我的看法,在处理本地->服务器时间转换时多次被烧掉会有点影响。(啊)

首先,帮你自己一个忙,在服务器端专门处理UTC或“祖鲁时间”的
日期时间。一旦进入客户端,就处理任何转换

// on the server side
var serverNow = DateTime.UtcNow;
Console.WriteLine(serverNow);

// and on the client side
var myLocalNow = serverNow.ToLocalTime();
Console.WriteLine(myLocalNow);
一般来说,“现在几点了?”的最终裁决者应该是服务器——这是您最直接控制的世界。从客户端的角度看,任何时间都应该从服务器从高处传递的“一个真实时间”转换而来


“当然,这只是我的观点,在处理本地->服务器时间转换时多次被烧掉会稍微影响。(呃)

如果您需要跟踪客户端本地时间的事件,您真的别无选择,只能在客户端.For.NET上捕获它(我猜您正在使用它,因为您的示例代码看起来像C#”),提供了一种比使用日期时间加上单独跟踪的时区信息更方便的机制


不幸的是,在客户端捕获时间戳会带来服务器端处理的潜在问题(包括潜在的安全问题)如果客户机和服务器系统时间之间存在差异。解决此问题的简单方法是将客户机捕获的时间与当前服务器时间进行比较,如果超出某个公差范围(例如:服务器时间的任意方向上5分钟),则拒绝该时间。即使它通过了此测试,您也不应该直接存储客户端捕获的时间戳。相反,您应该使用转换为客户端时区的服务器当前时间。

如果您需要跟踪客户端本地时间中的事件,您真的别无选择,只能在客户端上捕获。For.NET(我猜您正在使用它,因为您的示例代码看起来像C#),它提供了一种比使用DateTime加上单独跟踪的时区信息更方便的机制


不幸的是,在客户端捕获时间戳会带来服务器端处理的潜在问题(包括潜在的安全问题)如果客户机和服务器系统时间之间存在差异。解决此问题的简单方法是将客户机捕获的时间与当前服务器时间进行比较,如果超出某个公差范围(例如:服务器时间的任意方向上5分钟),则拒绝该时间。即使它通过了此测试,您也不应该直接存储客户端捕获的时间戳。相反,您应该使用转换为客户端时区的服务器当前时间。

我不确定这是否会起作用。如果您在我在纽约的应用程序中创建事务,请飞到LA并打开应用程序,它会说您创建了该事务Action比实际创建的时间早3个小时,只是因为您旅行了。我需要它,这样如果您在纽约时间凌晨3点创建它,然后飞到洛杉矶,它仍然会显示纽约时间凌晨3点。@capdragon然后我绝对推荐UTC时间-就在您保存“交易日期”时,还保存客户端的时区-然后您可以根据使用情况进行调整。绝对使用UTC上的JK,使客户端时区捕获事务中原子操作的一部分。我不确定这是否会起作用。如果您在我在纽约的应用程序中创建事务,请飞到LA并打开该应用程序,它会说您创建了该事务d该事务比实际创建的时间早3小时,只是因为您旅行了。我需要它,这样如果您在纽约时间凌晨3点创建它,然后飞到洛杉矶,它仍然会显示纽约时间凌晨3点。@capdragon然后我绝对推荐UTC时间-就在您保存“事务日期”时,还保存客户端的时区-然后您可以根据使用情况进行调整。绝对使用UTC上的JK,使客户端时区捕获成为事务原子操作的一部分。我认为这应该会起作用。因此,我将在客户端捕获时区,将时区发送到服务器,并捕获服务器上的时间,然后将它转换到客户端时区。我认为这应该会起作用。因此,我将在客户端捕获时区,将时区发送到服务器,在服务器上捕获时间,并将其转换到该客户端时区。