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

时间:2017-07-15 04:19:46

标签: c#

这是我到目前为止所尝试的内容:

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

它给出了我的答案,但我希望得到一个完整的数字:

“1500092088.9501”

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我只想用DateTimeOffset来计算秒数:

long secsSinceEpoch = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

这似乎是你正在寻找的东西,当然,如果你想把它作为一个实际的字符串,你可能想要调用ToString()

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

答案 2 :(得分:1)

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

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

(留下评论,但仍然有点简短的代表:))