2014-02-19 1 views
-1

У меня есть эти строки в моем коде:Как я могу удалить сообщения через 24 часа после их публикации?

PostedId.Add(responsePost); 
PostedId.Add(DateTime.Now.ToLongDateString()); 

PostedId является списком добавить к нему идентификатору публикуемого сообщения, а также добавить Дату поста.

Тогда у меня есть эта кнопка щелчка событие, удалять сообщения по каждым позам ID:

private void button7_Click(object sender, EventArgs e) 
     { 
      var responsePost = ""; 
      try 
      { 
       var objFacebookClient = new FacebookClient(AccessPageToken); 
       for (int i = 0; i < PostedId.Count; i++) 
       { 
        char[] array = PostedId[i].Where(c => Char.IsDigit(c) || c == '_').ToArray(); 
        string s1 = new string(array); 
        objFacebookClient.Delete(s1); 
       } 
      } 
      catch (Exception ex) 
      { 
       responsePost = "Facebook Posting Error Message: " + ex.Message; 
      } 
     } 

Вместо этого кнопка щелчок событие я перемещу позже код на событие таймера. То, что я хочу добавить в код, - это проверить, что если дата даты была отправлена, она отправляется через 24 часа (день), а затем удаляет ее.

Это пример того, как список PostedId выглядеть следующим образом:

index 0: {"id":"344087212396598_344923118979674"} 
index 1: Wednesday, February 19, 2014 
index 2: {"id":"344087212396598_344923125646340"} 
index 3: Wednesday, February 19, 2014 

Index 1 принадлежат показать индекс даты 0 идентификатор был отправлен. Индекс 3 - это дата, когда был отправлен индекс 2.

Я хочу, чтобы проверить, что если дата в индексе 1 прошло 24 часов удалить индекс 0, а затем удалить его собственного индекса 1.

Тогда же для индекса 3 и 2. Если дата в индексе 3 прошло 24 часы сначала удаляют индекс 2, затем удаляют индекс 3.

И так далее для всего индекса в списке объявлений.

Как я могу добавить эту проверку в мое событие click7 кнопки, так что, когда я нажимаю, как сейчас, он не будет удалять все сообщения автоматически, а только те, кто прошел 24 часа?

EDIT **

Это то, что я сделал в настоящее время:

В верхней части формы я добавил:

private List<DateTime> dt = new List<DateTime>(); 

Затем добавил:

PostedId.Add(responsePost); 
dt.Add(DateTime.Now); 

Тогда я проверьте даты:

private void button7_Click(object sender, EventArgs e) 
     { 
      TimeSpan span = new TimeSpan(1, 0, 0, 0); 
      var responsePost = ""; 
      try 
      { 
       var objFacebookClient = new FacebookClient(AccessPageToken); 
       for (int i = 0; i < PostedId.Count; i++) 
       { 
        char[] array = PostedId[i].Where(c => Char.IsDigit(c) || c == '_').ToArray(); 
        string s1 = new string(array); 
        if (dt[i] <= DateTime.Now.Subtract(span)) 
        { 
         objFacebookClient.Delete(s1); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       responsePost = "Facebook Posting Error Message: " + ex.Message; 
      } 
     } 

Это правильно? Я имею в виду делать, если (dt [i] < = DateTime.Now.Subtract (span)) является правильным сравнением?

Я использовал контрольную точку:

Теперь я = 0, так дт индекс 0: {2/19/2014 7:56:07 PM} И пядь: 1, 0, 0, 0 И DateTime.Now в DateTime.Now.Subtract: {2/19/2014 7:59:08 PM}

Итак, когда он удалит его? Через 24 часа? Я сделал все правильно?

+1

если заявление? – Mozzie

+0

Отредактировал мой вопрос сейчас тем, что я сделал. Это правильно ? – user3200169

+0

@ user3200169 Почему вы говорите «мой вопрос» ?. AFAIK этот вопрос из user2704319, который явно отличается идентификатором. Можете ли вы это прояснить? – rene

ответ

1

вы могли бы использовать что-то вдоль линий

TimeSpan span = new Timespan(1,0,0,0) //this sets the span to one day 

затем сделать сравнение

if(message.date =< DateTime.Now.Subtract(span)) 
{ 
     //do stuff 
} 

else 
{ 
     // do something else 
} 
+0

Отредактировал мой вопрос сейчас с тем, что я сделал . Это правильно ? – user3200169

+0

Да, это выглядит правильно, я проведу тест, когда я войду в офис и подтвержу, что вы –

Смежные вопросы