C# コードを使用して .ics ファイルを生成し、イベントを Outlook カレンダーに追加しています。
.ics ファイルは、次のコードで正常に生成されます。しかし、ここで 1 つ問題があります。それは、タイム ゾーンに従って開始/終了時間を設定することです。たとえば、.ics ファイルのシンガポール標準時間の開始/終了時刻があります。誰かがシンガポールでファイルを開いた場合はシンガポール時間を表示し、インドで開いた場合はインド時間を表示する必要があります。2012-04-20 13:00 のように、今回はインドで 10:30Am になります。インドで .ics ファイルが開かれた場合、.ics ファイルは開始時刻として 10:30 を表示します。
開始時間と終了時間は、システムのタイム ゾーンに従ってください。では、次のコードが機能しないのは何が問題なのですか。
助けてください。
コード:
DateTime StartTime = DateTime.Parse("2012-04-20 13:00:00.000Z");//Singapore Standard Time
DateTime EndTime = DateTime.Parse("2012-04-20 14:00:00.000Z");//Singapore Standard Time
bool UseAlarm = true;
StringBuilder sb = new StringBuilder(450);
sb.Append("BEGIN:VCALENDAR\n");
sb.Append("BEGIN:VEVENT\n\n");
sb.Append("DTSTART:");
sb.Append(StartTime.ToString("yyyyMMdd\\THHmmss\\Z"));
sb.Append("\nDTEND:");
sb.Append(EndTime.ToString("yyyyMMdd\\THHmmss\\Z"));
sb.Append("\nLOCATION:");
sb.Append("Location");
sb.Append("\nCATEGORIES:");
sb.Append(string.Empty);
sb.Append("\nTRANSP:OPAQUE\n");
sb.Append("SEQUENCE:0\n");
sb.AppendFormat("UID:RFCALITEM{0}\n", DateTime.Now.Ticks);
sb.Append("DTSTAMP:");
sb.Append(StartTime.ToString("yyyyMMdd\\THHmmss\\Z"));
sb.Append("\nX-ALT-DESC;FMTTYPE=text/html:");//
sb.Append("This is just for testing.");
sb.Append("\nSUMMARY:");
sb.Append("Title:Test ICS File");
sb.Append("\n\nPRIORITY:");
sb.Append(5);
sb.Append("\nCLASS:PUBLIC\n");
if (UseAlarm)
{
sb.Append("BEGIN:VALARM\n");
sb.Append("TRIGGER:PT15M\n");
sb.Append("ACTION:DISPLAY\n");
sb.Append("DESCRIPTION:Reminder\n");
sb.Append("PRIORITY:5\n");
sb.Append("END:VALARM\n");
}
sb.Append("END:VEVENT\n");
sb.Append("END:VCALENDAR");