如何获得显示自 1970 年以来整数秒数的字符串?



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

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

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

"1500092088.9501">

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

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 年初附近达到

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

long secsSinceEpoch = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

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

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

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

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

(会作为评论离开,但仍然有点短于代表:))

最新更新