对于学校练习,我必须在WPF应用程序中制作一个文本时钟,它将为您提供文本时间。我想要的是例如:当它是10:30时,时钟应该是10点半,荷兰语是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++;
}
}
}
}
}
答案 0 :(得分:2)
这只是伪造的代码,但会告诉你需要做些什么来增加你的时间
var dt = DateTime.Now.AddHours(1);
所以,在你的代码中你只需要做
date.AddHours(1);
希望这应该足以让你继续
答案 1 :(得分:2)
使用控件上的颜色设置有点难以理解您的代码。 这里有一些代码可以像人类所说的那样打印出时间。我希望你能适应它来设置控件的颜色。
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 11
答案 2 :(得分:2)
这是一个以字符串形式输出时间的示例程序 - 它应该很容易适应您使用的标签数组&amp;荷兰语措辞:
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作为文本分钟字符串数组的偏移量。
当您需要增加小时时 - 您还需要确保它被修改为十二以获得正确的数组偏移量。