xml - 如何将 System.Timer 与 xml UWP 中的 TimePicker 进行比较?
问题描述
我正在尝试在 UWP xml 中创建一个闹钟。所以我正在使用系统计时器并尝试将它与我设置的 TimePicker 进行比较。但我无法获得 Timepicker 的价值。有一条红色下划线表示“无法将 System.Timespan 隐式转换为 System.DateTime”。
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
DateTime currentTime = DateTime.Now;
DateTime userTime = timePicker.SelectedTime.Value; //here is where the error shows
if (currentTime.Hour == userTime.Hour && currentTime.Minute == userTime.Minute && currentTime.Second == userTime.Second)
{
timer.Stop();
try
{
}
catch(Exception ex)
{
}
}
}
解决方案
“无法将 System.Timespan 隐式转换为 System.DateTime”。
这个异常是因为timePicker.SelectedTime.Value的类型是Timespan,不能直接转换成DateTime。
如果要比较这两个数据,可以将Timespan转换为DateTimeOffset或将当前dateTime的小时、分钟、秒转换为秒,并与timespan进行比较。
另外,你需要在 UI 线程中获取 timePicker.SelectedTime.Value 的值,你可以试试下面的代码。
private async void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
TimeSpan userTime = timePicker.SelectedTime.Value;
DateTime currentTime = DateTime.Now;
//Method one
if (userTime.TotalSeconds == currentTime.Hour * 3600 + currentTime.Minute * 60 + currentTime.Second)
{
timer.Stop();
}
//Or
//DateTimeOffset combinedValue2 = new DateTimeOffset(new DateTime(currentTime.Year, currentTime.Month, currentTime.Day) + this.timePicker.Time);
//if (currentTime.Hour == combinedValue2.Hour && currentTime.Minute == combinedValue2.Minute && currentTime.Second == combinedValue2.Second)
//{
//timer.Stop();
//}
});
}
推荐阅读
- java - 如何将地图保存到共享首选项?
- c++ - C++ boost 返回 HTML 而不是 JSON
- typescript - 将 JSON 对象转换为接口,忽略打字稿中的大小写敏感性
- reactjs - 下一个 JS apollo 链接更改清除查询,必须刷新页面才能运行查询
- sql - Oracle SQL: How to get the nth node between the root and any node in a tree (Optimizing)
- c++ - MPI_Reduce on different communicators not working as expected
- reactjs - React Redux not updating state despite login working fine
- sql - Best way to merge JSON blob files to SQL table using Azure Data Factory
- r - Odd behavior of dplyr::between and filter
- haskell - Map.update Haskell 的问题