Проблема с датой VCALENDAR START и END при открытии из OUTLOOK в приложении C#.net

Я работаю с приложением VCALENDAR.

DateTime end = Convert.ToDateTime(Request.Form["datepicker1"]);
        String timeZone = "Asia/Calcutta";
        StringBuilder sbICSFile = new StringBuilder();
        DateTime dtNow = DateTime.UtcNow;
        //String end=endDate.Text;
        String summary="eAssist : Ticket Id - "+Session["ticket"].ToString();
        String description = txtlong.Text;

        sbICSFile.AppendLine("BEGIN:VCALENDAR");
        sbICSFile.AppendLine("VERSION:2.0");
        sbICSFile.AppendLine("PRODID://ICSTest/");
        sbICSFile.AppendLine("CALSCALE:GREGORIAN");


        //Event
        sbICSFile.AppendLine("BEGIN:VEVENT");
        sbICSFile.AppendLine("DTSTART;TZID=" + timeZone + ":"+dtNow);
        sbICSFile.AppendLine("DTEND;TZID=" + timeZone + ":"+end);
        sbICSFile.AppendLine("SUMMARY:"+summary);
        sbICSFile.AppendLine("DESCRIPTION:"+description);
        sbICSFile.AppendLine("UID:1");
        sbICSFile.AppendLine("SEQUENCE:0");

        sbICSFile.AppendLine("END:VEVENT");
        sbICSFile.AppendLine("END:VCALENDAR");

        Response.ContentType = "text/calendar";
        Response.AddHeader("content-disposition", "attachment; filename=eAssistEvent1.1.ics");
        Response.Write(sbICSFile);
        Response.End();

Он генерирует:

BEGIN:VCALENDAR
VERSION:2.0
PRODID://ICSTest/
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART;TZID=Asia/Calcutta:11/29/2017 6:51:59 AM
DTEND;TZID=Asia/Calcutta:12/3/2017 12:00:00 AM
SUMMARY:eAssist : Ticket Id - 11
DESCRIPTION:HTML Content inside text boxes
UID:1
SEQUENCE:0
END:VEVENT
END:VCALENDAR

Но когда я открываю вложение в Outlook, начальная и конечная даты меняются (для обеих всегда требуется текущее время).

Мой хостинг-сервер расположен в Восточном часовом поясе, и я получаю доступ к этому приложению из Индии, и на данный момент это приложение предназначено только для Индии.

Как получить точную дату начала и окончания в календаре Outlook на основе индийской локали?


person SubhenduGN    schedule 29.11.2017    source источник
comment
Возможно, вы захотите записать дату и время в том формате, в котором этого требует спецификация iCalendar. tools.ietf.org/html/rfc5545#section-3.3.4   -  person Sami Kuhmonen    schedule 29.11.2017


Ответы (1)


Что я сделал:

String dtStart = DateTime.Parse(end).ToUniversalTime().ToString("yyyyMMddT080000");
String dtEnd = DateTime.Parse(end).ToUniversalTime().ToString("yyyyMMddT160000");

Поскольку все мои встречи проходят с 8:00 до 16:00, поэтому я установил 080000 и 160000 для времени начала и окончания.

person SubhenduGN    schedule 29.11.2017