c# - 比较日期时间,看看是否已经过去一小时

标签 c# datetime compare

我试图查看自创建 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

Try it online

关于c# - 比较日期时间,看看是否已经过去一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60118618/

相关文章:

c# - 我可以从 Visual Studio 2010 中运行 NUnit 测试吗?

c# - 当我尝试从 Unity StandardAssets 脚本访问 `EnginePower` 时出现错误

c# - 如何在 Azure 移动应用服务中获取 Cosmos Db 数据

java - 来自 REST API 的服务器响应格式日期不起作用

javascript - 如何比较 Javascript 中的字符串数组?

java - 如何通过专门的比较方式检查列表中是否存在对象?

如果隐藏表单有未保存的更改,c# 取消应用程序关闭

python - 如何根据日期时间列从数据框中提取子集?

c# - .NET 库中是否有 Month 的预定义枚举?

string - groovy 脚本列表包含字符串值