【问题标题】:difference between using timespan or integer value representing the timespan in c#在c#中使用时间跨度或表示时间跨度的整数值之间的区别
【发布时间】:2020-04-10 16:40:09
【问题描述】:

我有一个代码,我正在计算日期之间的一些间隔,为此我定义了一个添加到一个日期的间隔时间,为此我看到了两种方法,但我不明白其中的区别,对我来说他们是一样的:

var timespan = new TimeSpan(0, 0, 5);
var d1 = new DateTime(2010, 1, 1, 8, 0, 15);

var newDateWithTimeSpan = d1.Add(timespan);
var newDateWithSeconds = d1.AddSeconds(5);

Console.WriteLine(newDateWithTimeSpan);
Console.WriteLine(newDateWithSeconds);

【问题讨论】:

  • 两者都加了 5 秒,为什么你会期待不同的结果?
  • 使用专用类型的一个原因是清晰。
  • 你也可以var timespan = TimeSpan.FromSeconds(5)。也可以使用TimeSpan d1 + timespan。只需多种方式来做事,以提供更大的灵活性。
  • 如果你给它一个有意义的名字(例如 playerReactionLimit),你可以通过创建一个时间跨度对象来赋予这个神奇的数字 5 一个意义。如果有帮助,您还可以在整个代码中重复使用时间跨度对象,如果您需要更改时间间隔,您只需在 Timespan 构造函数中更改它,而不是在您使用“幻数”5 的任何地方进行更改。

标签: c# datetime timespan


【解决方案1】:

不,计算新的DateTime 值的两种方式没有区别。通常有多种表达相同意图的方式,尤其是DateTime。 (例如,您可以使用 d1 + timespan 作为另一个选项。)

虽然这不是 实际 实现,但您可以想象 AddSeconds 是这样实现的:

public DateTime AddSeconds(double seconds) =>
    this.Add(TimeSpan.FromSeconds(seconds));

这只是一种方便的方法。

我认为在您的代码中使用 TimeSpan.FromSeconds 是一种更清晰的方式来表达“我想创建一个代表 5 秒的 TimeSpan”,但这是一个稍微不同的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多