Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个日期时间相等时如何计算_C#_Visual Studio_Windows Phone 7_Windows Phone_Windows Phone 8 - Fatal编程技术网

C# 两个日期时间相等时如何计算

C# 两个日期时间相等时如何计算,c#,visual-studio,windows-phone-7,windows-phone,windows-phone-8,C#,Visual Studio,Windows Phone 7,Windows Phone,Windows Phone 8,情况就是这样:我的应用程序中有一个时间选择器。我希望用户能够选择一个时间与时间选择器,然后应用程序将向用户发送一个通知,在时间选择器输入的时间。我正在用C语言为Windows Phone编写一个应用程序。到目前为止,这是我的代码,我不知道这些都是正确的 DateTime now = DateTime.Now; DateTime? get = timePicker1.Value; if (now == get) { ShellToast toast = new Shel

情况就是这样:我的应用程序中有一个时间选择器。我希望用户能够选择一个时间与时间选择器,然后应用程序将向用户发送一个通知,在时间选择器输入的时间。我正在用C语言为Windows Phone编写一个应用程序。到目前为止,这是我的代码,我不知道这些都是正确的

DateTime now = DateTime.Now;
DateTime? get = timePicker1.Value;         

if (now == get)
{
    ShellToast toast = new ShellToast();
    toast.Title = "Title";
    toast.Content = "The Time Has Come!";
    toast.Show();
}
但每次我运行代码时,它都会给我一个异常,应用程序根本不会加载,每次通知都不会显示。我还知道,应用程序不能在前台运行,以显示通知。我知道通知是有效的,因为我可以让它在其他情况下工作


基本上,我的问题是:如何在最终用户定义的特定时间触发通知

Line 1 : DateTime now = DateTime.Now;
Line 2 : DateTime? get = timePicker1.Value;
在第1行中,您得到系统当前日期时间,现在是日期时间,不为空。 但是在第2行中,get是可以为null的变量,您将获得timepicker.value并将日期时间与时间进行比较。 我不知道你有什么例外,但有两个额外的检查,你可以有更多的安全代码

get的空检查 确保在开发环境中可以比较日期时间和时间值。 你必须记住那个日期。现在有一个完整的时间和日期

因此,与get变量相比,必须忽略日期部分,否则可能无法工作

尝试将您的if更改为如下所示:

if (get.HasValue && now.TimeOfDay == get.Value.TimeOfDay)
{
    // your remaining code
}
此外,ShellToast类仅适用于后台服务,而不适用于前台应用。请查看备注


如果要在应用程序中显示Toast,请使用中的Toast提示符。

首先,如果应用程序在前台运行,则Toast通知不会显示。它应该只在后台代理中使用,或者当应用程序在锁屏下运行时使用。
其次,如果您的目标是在一天中选定的时间显示通知,那么您不能比较DateTime值,而是比较TimeOfDay部分。另外,通过检查get.HasValue,确保用户输入了有效值。您可以比较两个日期时间的日、月、年值。如果您想更精确一些,请考虑几分钟和几秒钟,因为我不知道您想要比较这些值的详细程度


如果您希望在特定时间收到通知,请尝试。

它会引发什么异常?您不需要问题中的“对不起”部分,每个人都知道学习是困难的。请告诉我们正在抛出的异常,以及使用DateTime的原因?get而不是DateTime get,即为什么get是可空的?实际上我不再得到异常,但get是可空的,因为您必须将可空的与时间选择器一起使用。DateTime get值是可空的,因为大多数较新的WPF控件返回可空的值,而不是其不可空的对应值。基本上,我的问题是:如何在最终用户定义的特定时间触发通知?不幸的是,问题在于,对于if语句,如果该语句不正确,它会将一个移动到下一个代码块,并且当两个日期时间实际上相等时,不会发出通知,由于它已经通过了如果部分改善了我的答复,请检查它现在谢谢!我用了一天的时间部分,我得到了它。我也从其他答案中学到了很多!