这是我到目前为止所尝试的内容:
var value = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds.ToString()
它给出了我的答案,但我希望得到一个完整的数字:
“1500092088.9501”
答案 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为您的舍入问题提供了一个很好的答案。
(留下评论,但仍然有点简短的代表:))