在计时器倒计时中包括小时
Include hour in timer countdown
我正在尝试创建一个包括小时数的倒计时。
private int time = 3660;
public MainWindow()
{
var vm = new TimerViewModel();
InitializeComponent();
// get display setting - 2 means extended
int displayType = Screen.AllScreens.Length;
// set the windows datacontext
DataContext = vm;
// set up the timedispatcher
dt.Interval = new TimeSpan(0, 0, 1);
dt.Tick += Timer_Tick;
}
private void Timer_Tick(object sender, EventArgs e)
{
switch(time)
{
case int x when x > 10 && x <= 20:
TimerPreview.Foreground = Brushes.Orange;
time--;
break;
.....................
default:
TimerPreview.Foreground = Brushes.LimeGreen;
time--;
break;
}
TimerPreview.Content = string.Format("00:{0:00}:{1:00}", time / 60, time % 60);
}
我不知道如何让倒计时与小时数一起正常工作。它适用于分钟和秒。
TimerPreview.Content = string.Format("{0:00}:{1:00}:{2:00}", time ???, time ??? 60, time % 60);
我尝试了多种组合,但未能找到解决方案。我错过了什么?非常感谢。
使用 3600
(一小时中的秒数),并在分钟上使用模数运算符,就像您在秒上所做的那样(因为您希望 60 分钟看起来滚动到新的一小时):
TimerPreview.Content =
string.Format("{0:00}:{1:00}:{2:00}", time / 3600, (time / 60) % 60, time % 60);
// 320 -> 00:05:20
// 7199 -> 01:59:59
// 7201 -> 02:00:01
另一个(可以说更具可读性)选项是使用 TimeSpan
来处理格式:
TimerPreview.Content = TimeSpan.FromSeconds(time).ToString(@"hh\:mm\:ss");
当time
为3660
时的结果:
01:01:00
编辑: 感谢@GrantWinney 指出 TimeSpan
的默认字符串格式与上面相同,除非时间跨度大于一天,在这种情况下,它也包括天数。所以你可以这样做:
TimerPreview.Content = TimeSpan.FromSeconds(time).ToString();
我正在尝试创建一个包括小时数的倒计时。
private int time = 3660;
public MainWindow()
{
var vm = new TimerViewModel();
InitializeComponent();
// get display setting - 2 means extended
int displayType = Screen.AllScreens.Length;
// set the windows datacontext
DataContext = vm;
// set up the timedispatcher
dt.Interval = new TimeSpan(0, 0, 1);
dt.Tick += Timer_Tick;
}
private void Timer_Tick(object sender, EventArgs e)
{
switch(time)
{
case int x when x > 10 && x <= 20:
TimerPreview.Foreground = Brushes.Orange;
time--;
break;
.....................
default:
TimerPreview.Foreground = Brushes.LimeGreen;
time--;
break;
}
TimerPreview.Content = string.Format("00:{0:00}:{1:00}", time / 60, time % 60);
}
我不知道如何让倒计时与小时数一起正常工作。它适用于分钟和秒。
TimerPreview.Content = string.Format("{0:00}:{1:00}:{2:00}", time ???, time ??? 60, time % 60);
我尝试了多种组合,但未能找到解决方案。我错过了什么?非常感谢。
使用 3600
(一小时中的秒数),并在分钟上使用模数运算符,就像您在秒上所做的那样(因为您希望 60 分钟看起来滚动到新的一小时):
TimerPreview.Content =
string.Format("{0:00}:{1:00}:{2:00}", time / 3600, (time / 60) % 60, time % 60);
// 320 -> 00:05:20
// 7199 -> 01:59:59
// 7201 -> 02:00:01
另一个(可以说更具可读性)选项是使用 TimeSpan
来处理格式:
TimerPreview.Content = TimeSpan.FromSeconds(time).ToString(@"hh\:mm\:ss");
当time
为3660
时的结果:
01:01:00
编辑: 感谢@GrantWinney 指出 TimeSpan
的默认字符串格式与上面相同,除非时间跨度大于一天,在这种情况下,它也包括天数。所以你可以这样做:
TimerPreview.Content = TimeSpan.FromSeconds(time).ToString();