Hallo Zusammen,
ich habe gerade ein kleines Problem mit der Berechnung einer Zeitdifferenz. Entweder habe ich gerade einen Knoten im Kopf, oder es ist garnicht so einfach ;-)
Ich habe folgendes Struct, welches mit Daten aus verschiedenen Datenquellen gefüllt wird(XML etc.):
Über eine Schleife lasse ich in regelmäßigen abständen prüfen, ob eine Erinnerung ausgegeben werden muss.
Fälligkeit des Termins ist die "StartTime". In "Reminder" ist die Anzahl an Minuten vor Beginn des Termins gespeichert, an denen ich Informiert werden möchte, also z.B. 15 oder 30 Minuten vorher.
Außerdem gibt es dann noch das Flag Closed, welches besagt, dass ich die Erinnerung geschlossen habe und nicht weiter erinnert werden möchte. Das Gegenteil hierzu ist RemindAgain und RemindAgainIn.
Die Funktion welche das ganze nun checken soll ist hier:
Kann mir jemand mal sagen wie ich genau die Differenz berechne? Wie oben zu sehen ist, habe ich schon mit verschiedenen Ansätzen probiert, aber ich kriege es nicht hin, mir wirklich nur die Termine anzeigen zu lassen welche noch nicht geschlossen wurden und ganz besonders, welche nur so weit in der Zukunft sind wie die aktuelle Startzeit und berücksichtigung des Reminders.
Ich Danke euch schon mal für eure Hilfe.
Gruss,
S.Michel
ich habe gerade ein kleines Problem mit der Berechnung einer Zeitdifferenz. Entweder habe ich gerade einen Knoten im Kopf, oder es ist garnicht so einfach ;-)
Ich habe folgendes Struct, welches mit Daten aus verschiedenen Datenquellen gefüllt wird(XML etc.):
Code:
public struct CalendarEntry { //public int ID; public Object dvID; public Object StartTime; public Object Reminder; public bool RemindAgain; public int RemindAgainIn; public bool Closed; public String Subject; public Object Location; }
Fälligkeit des Termins ist die "StartTime". In "Reminder" ist die Anzahl an Minuten vor Beginn des Termins gespeichert, an denen ich Informiert werden möchte, also z.B. 15 oder 30 Minuten vorher.
Außerdem gibt es dann noch das Flag Closed, welches besagt, dass ich die Erinnerung geschlossen habe und nicht weiter erinnert werden möchte. Das Gegenteil hierzu ist RemindAgain und RemindAgainIn.
Die Funktion welche das ganze nun checken soll ist hier:
Code:
private void CheckNotify() { int i = 0; bool found = false; DateTime Date = new DateTime(); DateTime Start = new DateTime(); TimeSpan Span = new TimeSpan(); for(i = 0; i < AllEntrys.Count; i++) { Date = DateTime.Now.AddMinutes(-Convert.ToDouble(AllEntrys[i].Reminder.ToString())); Start = Convert.ToDateTime(AllEntrys[i].StartTime.ToString()); Span = Date - Start; int diffInMinutes = Span.Minutes; int diffInHours = Span.Hours; int diffInDays = Span.Days; //diffInDays == 0 && diffInHours == 0 && diffInDays <= Convert.ToInt32(AllEntrys[i].Reminder.ToString()) if (Date <= Start || AllEntrys[i].Closed == false) { MessageBox.Show("Date: " + Date.ToString() + " Start: " + Start.ToString() + " Reminder: " + AllEntrys[i].Reminder.ToString() + " Double: " + Convert.ToDouble(AllEntrys[i].Reminder.ToString())); //MessageBox.Show(Span.); found = true; MethodInvoker UpdateListview = delegate { String End = ""; lblSubject.Text = AllEntrys[i].Subject; lblStartTime.Text = AllEntrys[i].StartTime.ToString(); lblLocation.Text = AllEntrys[i].Location.ToString(); if (AllEntrys[i].StartTime.ToString() == "1") { End = " Minute"; } else { End = " Minuten"; } listView1.Items.Add(new ListViewItem(new string[] { AllEntrys[i].Subject, diffInMinutes.ToString() + End })); }; Invoke(UpdateListview); } //Date AllEntry[i]; <= Reminder //Aktuelle Zeit - Fällige Zeit <= Reminder } if (found == true) { this.Visible = true; this.ShowInTaskbar = true; Show(); } }
Ich Danke euch schon mal für eure Hilfe.
Gruss,
S.Michel
Comment