【问题标题】:Check if timestamp is X seconds old in C#?检查时间戳在 C# 中是否存在 X 秒?
【发布时间】:2020-08-08 06:14:23
【问题描述】:

我有两个 unix 时间戳 old 和 new,我想检查它们之间是否经过了 30 秒。我想检查oldTs 是否存在 30 秒。基本上如果oldTs 是<= 30 second old 那么我想返回true,否则我想返回false。

long oldTs = long.Parse(processData.timestamp);
long currentTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

return currentTimestamp >= (oldTs + TimeSpan.FromSeconds(30));

我尝试了上面的代码,但我得到一个错误 -

Operator '+' cannot be applied to operands of type 'long' and 'TimeSpan' 

我在这里做错了什么?

【问题讨论】:

  • 也许您在TimeSpan.FromSeconds(30) 中缺少.TotalMilliseconds ?

标签: c# asp.net datetime


【解决方案1】:

在几秒钟内设置两个变量。你必须简单地oldTS + 30。

你可以像这样获取unix时间戳

long unixTimestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

【讨论】:

    【解决方案2】:

    这会返回一个 TimeSpan 数据类型。

    TimeSpan.FromSeconds(30)
    

    您可以尝试获取它的毫秒数。

    TimeSpan.FromSeconds(30).TotalMilliseconds
    

    我希望它有所帮助。编码愉快。

    【讨论】:

    • 啊,明白了。我的逻辑也可以检查 30 秒的旧时间戳吗?
    • @cs98 如果我的理解是正确的,你想检查是否已经过了 30 秒,我实现它的想法是这样的: long oldTs = long.Parse(processData.timestamp); var oldDateTime = new DateTime(oldTs); return (DateTime.Now - oldDateTime).TotalSeconds == 30;
    猜你喜欢
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-04-21
    相关资源
    最近更新 更多