首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在for循环中增加小时

如何在for循环中增加小时
EN

Stack Overflow用户
提问于 2018-04-12 15:49:06
回答 3查看 449关注 0票数 1

对于学校的练习,我必须在WPF应用程序中制作一个文本时钟,这将给您在文本中的时间。例如,我想要的是:当时间是10:30时,时钟应该说十点半,在荷兰语里是‘11点前的一半’,‘一半11’。但我不知道如何在这个for循环中实现它,我尝试了i++;,但这并没有增加时间。

请记住,我刚开始编写代码,所以我可能犯了很多错误,这是代码。

我希望大家都明白,否则我会把一切都改成英语。

代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var date = DateTime.Now;

        TijdHet.Foreground = new SolidColorBrush(Colors.Red);
        TijdIs.Foreground = new SolidColorBrush(Colors.Red);

        var time = new Label[]
        {
            TijdEen, TijdTwee, TijdDrie, TijdVier, TijdVijf, TijdZes, TijdZeven, TijdAcht, TijdNegen, TijdTien,
            TijdElf, TijdTwaalf
        };

        int GetMinutes() {
            var minutes = 5 * (int) Math.Round(date.Minute / 5.0);
            return minutes;
        }

        int GetHour()
        {
            var hour = (date.Hour + 11) % 12 + 1;

            if (hour == 1) {
                TijdEen.Foreground = new SolidColorBrush(Colors.Red);
            }

            return hour;
        }

        for (int i = 1; i <= 12; i++)
        {
            if (GetHour() == i + 1)
            {
                time[i].Foreground = new SolidColorBrush(Colors.Red);

                if (GetMinutes() == 0) {
                    TijdUur.Foreground = new SolidColorBrush(Colors.Red);
                }

                if (GetMinutes() == 5 || GetMinutes() == 10 || GetMinutes() == 35 || GetMinutes() == 40) {
                    TijdOver.Foreground = new SolidColorBrush(Colors.Red);
                }

                if (GetMinutes() == 20 || GetMinutes() == 25 || GetMinutes() == 50 || GetMinutes() == 55) {
                    TijdVoor.Foreground = new SolidColorBrush(Colors.Red);
                }

                if (GetMinutes() == 30)  {
                    TijdHalf.Foreground = new SolidColorBrush(Colors.Red);
                    i++;
                }
            }
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-12 16:33:24

下面是一个示例程序,它以字符串的形式输出时间--它应该可以很容易地适应使用标签数组&荷兰语短语:

代码语言:javascript
复制
void Main()
{
  string[] hours = { "Twelve", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven"};
  string[] minutes = { "O'Clock", "Five", "Ten", "Quarter", "Twenty", "TwentyFive", "Half", "TwentyFive", "Twenty", "Quarter", "Ten", "Five"};

  DateTime now = DateTime.Now;

  int HourOffset = now.Hour % 12;
  int MinOffset = (now.Minute / 5);

  string TimeStr, ConStr;
  if (MinOffset == 0)
    TimeStr = hours[HourOffset] + " " + minutes[0];
  else
  {
    if (MinOffset >= 6)
    {
      ConStr = " To ";
      HourOffset++;
      HourOffset %= 12;
    }
    else
      ConStr = " Past ";
    TimeStr = minutes[MinOffset] + ConStr + hours[HourOffset];
  }

  Console.WriteLine(TimeStr);
}

注意,如果只显示当前时间,则不需要for循环。

首先,将小时作为偏移量获取到12个元素小时字符串数组中。然后将分钟数除以5作为偏移量,得到文本分钟字符串数组。

当您需要增加小时时,您还需要确保将其修改为12,以获得数组中的正确偏移量。

票数 2
EN

Stack Overflow用户

发布于 2018-04-12 15:52:54

这只是psuedo代码,但是会显示您需要做什么来增加您的小时数。

代码语言:javascript
复制
var dt = DateTime.Now.AddHours(1);

所以,在您的代码中,您只需做

代码语言:javascript
复制
date.AddHours(1);

希望这能给你足够的时间继续下去

票数 2
EN

Stack Overflow用户

发布于 2018-04-12 16:12:11

在控件上设置颜色时,您的代码有点难以理解。这里有一些代码,可以像人类所说的那样打印出时间。我希望你能调整它来设置你的控件的颜色。

代码语言:javascript
复制
static void PrintTime(int hours, int minutes)
{
    if (minutes >= 30)
    {
         hours++;
         minutes -= 60;
    }
    hours = hours % 12;
    if (hours == 0) hours = 12;
    Console.WriteLine("The time is " + Math.Abs(minutes) + (minutes < 0 ? " to " : " past ") + hours);
}

如果你这样称呼它

代码语言:javascript
复制
PrintTime(10, 29);
PrintTime(10, 30);
PrintTime(10, 31);

它会打印出来

代码语言:javascript
复制
The time is 29 past 10
The time is 30 to 11
The time is 29 to 11
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49800882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档