【问题标题】:C#, how do I make a clock work with added hours?C#,如何使时钟在增加时间的情况下工作?
【发布时间】:2011-05-17 20:22:47
【问题描述】:

使用 Visual Studio 2008 (C#) 我必须制作一个具有当前时区小时的工作时钟(数字),以及更多具有不同时区的时钟,例如纽约等。

在表单中我放置了 2 个标签(用于时钟)和一个计时器,在计时器中我放置了以下代码:

 timer1.Interval = 1000;

        label1.Text = DateTime.Now.ToLongTimeString();
        DateTime myDateTime = DateTime.Now;


        TimeSpan myTimeSpan = new TimeSpan(2, 0, 0);
        DateTime myDateTime8 = myDateTime + myTimeSpan;
        label2.Text = ("" + myDateTime8);

具有时间跨度的部分确实为时钟增加了 2 小时,但是,除了实际时钟之外,我还得到了剩下的日期,例如:

“17-05-2011 22:38:00”

我需要知道如何增加/减少小时数并只显示时钟。

【问题讨论】:

    标签: c# time clock timespan hour


    【解决方案1】:

    无需添加时间跨度,只需调用 AddHours 方法:

    myDateTime.AddHours(2).ToLongTimeString();
    

    【讨论】:

    • 太棒了!如此简单但效果很好,非常感谢您快速准确的响应;)
    【解决方案2】:

    myDateTime.ToShortTimeString() 只会返回时间

    或者正如Tejs 提到的,您可以使用ToLongTimeString(),我猜它更适合您的要求。

    对于增加或减少小时数,您可以使用 dateTime.AddHours(even hours in negative) 或对于减去您也可以使用 dateTime.Subtract(time to subtract)

    【讨论】:

      【解决方案3】:

      使用时间跨度方法的 .ToString() 方法可以让您以所需的任何格式输出日期。见http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

      【讨论】:

        【解决方案4】:
        1. 根据您的时区需求,使用类似于this MSDN article 中建议的方法。尤其:
          1. 在执行任何算术之前使用ConvertTimeToUtc 获取UTC 时间。
          2. 执行所需的算术运算。
          3. 使用TimeZoneInfo.ConvertTime 转换回当地时间。
        2. 要获取DateTime 的时间部分,请使用DateTime.ToShortTimeString()。请注意,这是文化感知的,因此如果您需要固定格式,请考虑使用 DateTime.ToString() 指定格式。

        【讨论】:

          猜你喜欢
          • 2021-02-13
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-01
          • 1970-01-01
          相关资源
          最近更新 更多