C# 世界上任何地方的时差
在我的网站上,我想确保如果时间间隔低于以下功能的C# 世界上任何地方的时差,c#,.net,C#,.net,在我的网站上,我想确保如果时间间隔低于以下功能的DateTime st的1分钟,则可以采取行动,否则将被拒绝。这是代码 DateTime st = MyDate.Value; // current value from database: 2019-12-05 13:20:15.478 DateTime now = DateTime.Now; TimeSpan span = now.Subtract(st); int expMin
DateTime st
的1分钟,则可以采取行动,否则将被拒绝。这是代码
DateTime st = MyDate.Value; // current value from database: 2019-12-05 13:20:15.478
DateTime now = DateTime.Now;
TimeSpan span = now.Subtract(st);
int expMin = 1;
if (span.Minutes < expMin)
{
// Do something
}
else
{
// Ignore
}
DateTime st=MyDate.Value;//数据库中的当前值:2019-12-05 13:20:15.478
DateTime now=DateTime.now;
时间跨度=现在。减去(st);
int expMin=1;
如果(span.Minutes
因此,根据上述日期值,2019-12-05 13:21:15.478之后将无法访问该服务
这在本地和我的服务器上都有效,但我看到一些报告,其中一些用户正在从另一个国家访问该服务。是否有另一种方式来确保时间,无论用户来自哪个国家,都不能在一分钟的时间内被访问? < P>你需要使用DATEMEMOffice来考虑用户的时区。 我假设“MyDate”是由客户机传递的。请参见下面的示例
var myDate = new DateTimeOffset(2019, 12, 05, 13, 20, 15, 478, new TimeSpan(0, 2, 0, 0, 0));
var now = new DateTimeOffset(2019, 12, 05, 14, 20, 45, 478, new TimeSpan(0, 3, 0, 0, 0));
var span = now.Subtract(myDate);
int expMin = 1;
if (span.Minutes < expMin)
{
Console.WriteLine("Do something");
}
else
{
Console.WriteLine("Ignore");
}
var myDate=new DateTimeOffset(2019,12,05,13,20,15478,new TimeSpan(0,2,0,0,0));
var now=新的DateTimeOffset(2019,12,05,14,20,45478,新的时间跨度(0,3,0,0,0));
var span=now.Subtract(myDate);
int expMin=1;
如果(span.Minutes 对于这种情况,您需要考虑使用GST时区(意思是保存和检索数据库中的GST)。总是在数据库中存储UTC(协调的通用时间)时间。然后您可以轻松地将其与DateTime.UtcNow
@BrianRogers Correct进行比较。我的意思是UTC而不是GST。如果使用UTC,您将丢失本地时间的信息。如果你不需要这些信息,这将是最简单的解决办法。@BrianRogers:不总是-请参阅。通常这是正确的做法,但并非总是如此。