【问题标题】:How can I get a string that shows the integer number of seconds since 1970? [duplicate]如何获得显示自 1970 年以来整数秒数的字符串? [复制]
【发布时间】:2017-07-15 13:02:30
【问题描述】:

到目前为止,这是我尝试过的:

var value = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds.ToString()

它给了我下面的答案,但我想得到一个整数:

“1500092088.9501”

【问题讨论】:

  • 所以...您正在寻找有关如何round to an integer 的说明?
  • 这段代码的输出是什么?
  • @danyolgiax 这不是重复的。您链接的问题显示如何获得总的第二个差异,Ops 问题已经获得差异并需要四舍五入。

标签: c#


【解决方案1】:

以下是处理这种情况的各种方法的几个示例

double secondsSince1970 = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

// int logic. ints are whole numbers so casting to an int will drop all decimals with no rounding.
Console.WriteLine(((long)secondsSince1970).ToString());

// Math logic. .Net gives us some handy Maths to work with rounding decimals
// Round up
Console.WriteLine(Math.Ceiling(secondsSince1970).ToString());
// Round down
Console.WriteLine(Math.Floor(secondsSince1970).ToString());
// Round nearest
Console.WriteLine(Math.Round(secondsSince1970).ToString());

编辑:将 int 逻辑更改为强制转换为 long 而不是 int,因为 int.MaxValue 将在 2038 年初附近到达

【讨论】:

    【解决方案2】:

    我只会使用DateTimeOffset 来获取秒数:

    long secsSinceEpoch = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
    

    这似乎是您正在寻找的内容,当然,如果您希望将其作为实际字符串,您可能需要调用 ToString()

    var secsSinceEpoch = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
    

    【讨论】:

    • 那还会给出小数点后的数字吗?我想得到一个整数。
    • 不,因为它是长而不是双。
    • 一个“整数”数字没有小数,它是一个整数
    • 你的方法让我很感兴趣,所以我做了一个快速基准测试,虽然这种操作可能不需要优化,但我想我还是会出于兴趣分享结果。转换 datetime 总秒数在大约 588 毫秒内运行 10000000 次循环,而 DateTimeOffset ToUnixTimeSeconds 在 2111 毫秒内运行 10000000 次循环。所以它大约慢了 4 倍
    • @Alan ToUnixTimeSeconds 方法在 DateTimeOffset 类型上可用,它不会直接存在于 DateTime
    【解决方案3】:

    我认为值得一提 - 如果你想要从纪元时间开始的秒数,即 1970 年 1 月 1 日,你不需要做减法......你只需要得到当前日期时间并转换为秒。

    Joe_DM 为您的舍入问题提供了一个很好的答案。

    (会留下评论,但代表仍然有点不足:))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2011-08-06
      • 2019-07-10
      • 1970-01-01
      • 2020-02-11
      相关资源
      最近更新 更多