2010-03-23 1 views
1

Я использую календарь D-Day, и я не уверен, но у меня возникла странная проблема.Календар D-Day имеет неправильные даты при импорте из календаря Google?

я в основном имею это для моего кода

iCalendar iCal = iCalendar.LoadFromStream(file.InputStream); 
foreach (Event evt in iCal.Events) 
       { 
        DateTime start = evt.DTStart.Date; 
        DateTime end = evt.DTEnd.Date; 
        // loop through it and get values. 
       } 

Тем не менее, когда я импортировать календарь с Google календаря дата окончания перепуталось на некоторых вещи я импортер.

Как, например, у меня есть эта

Название: не должен показывать Когда: Вс, 21 марта (весь день).

И все же, когда я импортирую его. Я говорю, что дата начала 21-го, но дата окончания 22-го, когда она должна быть 21-й.

Не уверен, что происходит.

Я не совсем уверен, какую другую информацию я могу вам дать.

Я сделал приложение линии cmd и поместил в него файл .ics. Если кто-то знает хорошее место, я могу загрузить его, и вы, ребята, можете понять, что я имею в виду.

Это то, что выводит моя строка cmd.

Start Date Of this Record 
Some one day task 3/25/2010 12:00:00 AM 
End Date of this Record 3/26/2010 12:00:00 AM 


Start Date Of this Record 
Test using quick create(bubble that shows up when clicked on date box) - 1 day t 
ask 3/21/2010 12:00:00 AM 
End Date of this Record 3/22/2010 12:00:00 AM 


Start Date Of this Record 
Spans 2 days 3/30/2010 12:00:00 AM 
End Date of this Record 4/1/2010 12:00:00 AM 

ответ

1

Если это весь день события, я считаю, что время окончания будет 00:00:00 на следующий день, он же 12:00:00 AM. Разве это не то, что вы видите на время?

Последний пример, который вы даете действительно, охватывает два дня (март имеет 31 день) и является правильным. На выходе вы видите jives с определением события All Day. Он начинается в 12:00 и заканчивается в 12:00 на следующий день.

Если вы хотите, чтобы весь день события поистине остаться только в тот же день, вы могли бы сделать проверку, как:

if (((end - start) == TimeSpan.FromDays(1.0)) 
    && (start.Hour == 0 && start.Minute == 0)) 
{ 
    end = end - TimeSpan.FromSeconds(1.0); // now 23:59:59 same day as start 
} 
+0

Нет, он просто установлен как 12:00:00 (см. Мое редактирование для вывода). – chobo2

+0

То же самое, что и 00:00:00, если вы не включаете информацию AM/PM. – user7116

+0

Ох. Итак, это то, что хочет стандарт ics или что-то, что я просто нахожу настолько странным.Для моего календаря, когда кто-то положил allDay, мне понравилось с 12:00 до 23:30 (они могут выбирать только с шагом в полтора часа). – chobo2

1

Chobo,

Если вы пытаетесь создать все-дневные события в DDay.iCal это очень просто:

event.IsAllDay = true; 

Это то, чего вы пытаетесь достичь? Честно говоря, ваша проблема не так понятна из того, что вы уже сказали нам.

Спасибо, -Doug

+0

Вы, казалось, понимали это на другом форуме lol. – chobo2

0

Вам нужно установить ту же дату начала и окончания свойств и IsAllDay = True:

var evt = iCal.Create<DDay.iCal.Event>(); 
evt.Start = new iCalDateTime(myEvent.Date); 
evt.End = new iCalDateTime(myEvent.Date); 
evt.IsAllDay = true; 

В противном случае IsAllDay свойство не работает, как ожидалось. Пожалуйста, ознакомьтесь с описанием объекта:

virtual public bool IsAllDay 
     { 
      get { return !Start.HasTime; } 
      set 
      { 
       // Set whether or not the start date/time 
       // has a time value. 
       if (Start != null) 
        Start.HasTime = !value; 
       if (End != null) 
        End.HasTime = !value; 

       if (value && 
        Start != null && 
        End != null && 
        object.Equals(Start.Date, End.Date)) 
       { 
        Duration = default(TimeSpan); 
        End = Start.AddDays(1); 
       } 
      } 
     } 

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

  • Нет связанных вопросов^_^