我试图查看自创建 token 对象以来是否已经过去一小时。 我在创建它时使用 datetime.utcnow 。
我尝试过 datetime.compare,并直接比较两个日期时间,但无论我做什么,它都会得到相同的结果..(不是我想要的)
如果 token 创建后一小时过去了, token 应该被“消耗”,因此它不再有效。
token 对象
public int ID { get; set; }
public int UserId { get; set; }
public string Token { get; set; }
public System.DateTime Time_stamp { get; set; }
public Nullable<bool> Consumed { get; set; }
我的验证方法
public bool IsValidToken(string token)
{
var tokenEntity = this.GetAll().Where(x => x.Consumed == false && x.Token == token).FirstOrDefault();
if (tokenEntity != null)
{
var tokenDate = tokenEntity.Time_stamp;
var machineDate = DateTime.UtcNow;
var result = DateTime.Compare(tokenDate, machineDate.AddHours(1));
if (result > 0)
{
tokenEntity.Consumed = true;
this.Update(tokenEntity);
return false;
}
else
{
return true;
}
}
return false;
}
最佳答案
您可以减去两个 DateTime
并获得结果 DateTime
的总小时数,而不是 DateTime.Compare()
。
类似于,
var result = (DateTime.UtcNow - tokenEntity.Time_stamp).TotalHours;
if(result > 1)
{
//Do your business logic for expiring token
}
else
//Your business logic
关于c# - 比较日期时间,看看是否已经过去一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60118618/