对于学校的练习,我必须在WPF应用程序中制作一个文本时钟,这将给您在文本中的时间。例如,我想要的是:当时间是10:30时,时钟应该说十点半,在荷兰语里是‘11点前的一半’,‘一半11’。但我不知道如何在这个for循环中实现它,我尝试了i++;,但这并没有增加时间。
请记住,我刚开始编写代码,所以我可能犯了很多错误,这是代码。
我希望大家都明白,否则我会把一切都改成英语。
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++;
}
}
}
}
}发布于 2018-04-12 16:33:24
下面是一个示例程序,它以字符串的形式输出时间--它应该可以很容易地适应使用标签数组&荷兰语短语:
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,以获得数组中的正确偏移量。
发布于 2018-04-12 15:52:54
这只是psuedo代码,但是会显示您需要做什么来增加您的小时数。
var dt = DateTime.Now.AddHours(1);所以,在您的代码中,您只需做
date.AddHours(1);希望这能给你足够的时间继续下去
发布于 2018-04-12 16:12:11
在控件上设置颜色时,您的代码有点难以理解。这里有一些代码,可以像人类所说的那样打印出时间。我希望你能调整它来设置你的控件的颜色。
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);
}如果你这样称呼它
PrintTime(10, 29);
PrintTime(10, 30);
PrintTime(10, 31);它会打印出来
The time is 29 past 10
The time is 30 to 11
The time is 29 to 11https://stackoverflow.com/questions/49800882
复制相似问题