【问题标题】:How to subtract timestamps using C# [duplicate]如何使用 C# 减去时间戳 [重复]
【发布时间】:2016-07-15 15:30:05
【问题描述】:

在 C# 统一中,我想做时间减去时间。 我有一个下面的例子:

Time1:
int Hour = 12;
int Minutes = 0;
Int Seconds = 0;

Time2:
int LastHour = 1;
int LastMinutes = 3;
int LastSeconds = 20;

其实我希望结果如下:

Result:
int ResultHour = 10;
int ResultMinutes = 56;
int ResultSeconds = 40;

如果 Time1 - Time2 会得到类似的结果

如何在 C# unity 中做到这一点?

【问题讨论】:

  • 为什么要在电子游戏中这样做?
  • @Dennis Liu 考虑到您的另一个问题,您将存储 UNIX 时间戳,您被转换成 TimeSpan 误导了,您不需要它。只需减去您的新时间戳和旧时间戳,检查结果是否大于某个时间段(一分钟为 60,一小时为 3600 等等),就是这样。
  • 是的@JoeBlow,因为我想计算计时器。例如:如果我在 00:00:60 开始播放计时器,那么当播放计时器开始倒计时 00:00:59 00:00:58 00:00:57 00:00:56 00:00:55 然后我退出游戏。然后我延迟播放3秒。当我在 3 秒后播放时,计时器从 00:00:52 00:00:51 00:00:50 开始倒计时。
  • 嗨,丹尼斯。您只需使用调用。 (也可能是 InvokeRepeating)这很容易!

标签: c# unity3d


【解决方案1】:

您可以使用TimeSpan 结构:

var time1 = new TimeSpan(12, 0, 0);
var time2 = new TimeSpan(10, 56, 40);

var result = time1 - time2; // will be 01:03:20

要获取具体的时间部分,请访问resultHoursMinutesSeconds 属性。

【讨论】:

    【解决方案2】:

    TimeSpan 是你的方式:

    TimeSpan result = (new TimeSpan(Hour, Minutes, Seconds)
                     - new TimeSpan(LastHour, LastMinutes, LastSeconds));
    
    int ResultHour = result.Hours;
    int ResultMinutes = result.Minutes;
    int ResultSeconds = result.Seconds;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多