C# 添加到日期的秒数以计算时间
快速提问,我有一个程序,它给出了自C# 添加到日期的秒数以计算时间,c#,date,datetime,time,seconds,C#,Date,Datetime,Time,Seconds,快速提问,我有一个程序,它给出了自01.01.2000以来的秒数 例如,12.02.2016 11:23:55的秒数大约为508590531秒 是否有一种方法可以根据过去的秒数和开始日期计算结束日期 我知道我可以手工计算过去的分钟/天/月/年,然后尝试计算“结束时间”,但我必须注意不要因为遗漏闰年而犯错误 快速定义只是为了完全清楚: Start Date : 01.01.2000 End Date: Current Date Time passed: Seconds passed betw
01.01.2000
以来的秒数
例如,12.02.2016 11:23:55
的秒数大约为508590531
秒
是否有一种方法可以根据过去的秒数和开始日期计算结束日期
我知道我可以手工计算过去的分钟/天/月/年,然后尝试计算“结束时间”,但我必须注意不要因为遗漏闰年而犯错误
快速定义只是为了完全清楚:
Start Date : 01.01.2000
End Date: Current Date
Time passed: Seconds passed between start date and end date
当然
你可以互相减法,用like
如果要将其转换为int
,可以显式将其转换为(int)ts.TotalSeconds
如果您已经有秒数,并且希望根据开始日期进行计算,则可以使用like
这很容易。只需添加秒数,无需魔法或新解决方案
DateTime AddedFrom2000 = new DateTime(2000, 1, 1).AddSeconds(508590531);
如果我没有弄错的话,您的代码会计算自2000年1月1日以来的秒数。我要找的是01.01.2000+seconds=date这不是你想要的,至少我理解为@SonerPossible duplicate,
508590531
2000年1月1日12.02.2016 11:08:51not12.02.2016 11:23:55
@Equalsk是的,这也概括了我的问题:答案不错,但也要注意DateTimeKind
。如果您的原始值是2000-01-01 UTC午夜后的秒数,则在此处创建DateTime
时设置DateTimeKind.UTC
。目前,这段代码使用的是DateTimeKind.Unspecified
,如果基础真的是一个“浮动时间”,这就很好了。如果在序列化或时区转换中使用结果值,则此区别很重要。
var dt = new DateTime(2000, 1, 1).AddSeconds(508590531); // {12.02.2016 11:08:51}
var newDate = oldDate.AddSeconds(numSeconds);
DateTime AddedFrom2000 = new DateTime(2000, 1, 1).AddSeconds(508590531);