从今天起1个月(UTC)获取日期(以秒为单位).C#



问题:我正在尝试获取此日期:一个C#长,即从今天起一个月的时间戳(UTC((以秒为单位(。

我尝试了几种方法,包括:

DateTime startDate = DateTime.UtcNow.AddMonths(1);
long nextMonth = startDate.Ticks; 

我在将DateTime转换为long的回答中看到了以上内容,但我使用的API需要秒(而不是节拍(。我希望有一个更优雅的解决方案,而不是像我看到的那样,通过某种数学方法将这段时间从滴答转换为秒:

long epoch = value.ToUniversalTime().Ticks - 621355968000000000) / 10000000;

但是,即使没有,我也不太确定如何将刻度转换为秒。非常感谢。

为什么要麻烦滴答声或复杂的转换?你需要几秒钟,对吧?这只是两个不同日期之间的TimeSpan.TotalSeconds的数量。

var startDate = DateTime.UtcNow;
var nextMonth = startDate.AddMonths(1);
var duration = nextMonth - startDate;
var value = duration.TotalSeconds;

值为双值。如果需要,您可以使用转换为long

var longValue = Convert.ToInt64(duration.TotalSeconds);

我不会担心决心的丧失。。无论你使用哪种日期,这都将是一个不到一秒的损失。无论您跳过什么关卡进行转换,都会发生这种情况,因为您的API分辨率仅限于秒。

编辑:如果你需要圆形。。。你可以研究各种取整策略。

由于您只得到一个月内的秒数(从现在起一个月的持续时间(,因此结果将始终是当前月份的秒数。因此,我们所要做的就是根据当月的天数创建一个TimeSpan,并从中获得TotalSeconds

long seconds = (long) TimeSpan
.FromDays(DateTime.DaysInMonth(DateTime.UtcNow.Year, DateTime.UtcNow.Month))
.TotalSeconds;

最新更新