簡體   English   中英

防止 Google 日歷 API V3 更改事件時間 C#

[英]Preventing Google Calendar API V3 from changing event times C#

我真的遇到了一些時區問題,並且沒有遇到其他類似問題。

基本上我想在兩個人之間創建和共享一個谷歌日歷事件,但我希望我為開始/結束提供的日期時間與他們中的任何一個人完全一致並且不轉換。 我在 UTC-5 中,當我測試事件時,我在過去 5 小時收到它們,即使我將時區設置為 UTC,從日期中刪除“Z”,並將 DateTimeKind 設置為本地.. .

我嘗試過的事情:

DateTimeRaw = DateTime.ParseExact(appointment.Start.ToString("MM/dd/yyyy HH:mm"), "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture).ToString("yyyy-MM-ddTHH:mm:ss").Replace("Z", "")

然后將上述但 with.ToUniversalTime() 添加到約會

DateTime = new DateTime(appointment.Start.Year, appointment.Start.Month, ....)

並且...

DateTime.SpecifyKind(DateTime.ParseExact(appointment.Start.ToString("MM/dd/yyyy HH:mm"), "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture), DateTimeKind.Local)

我還用 DateTimeKind.UTC 嘗試了上述方法

我基本上一直在嘗試大量組合,然后決定停止,因為我真的不知道為什么它不起作用......

是否可以為 Google 日歷中的所有用戶保留完全相同的時間? 在此之前我使用過 ICAL.NET 庫並制作了自己的.ics 事件,它運行良好,但 GCal 的相同 DateTime 代碼似乎無法按預期工作。

編輯:

關於我正在嘗試做的事情的推理的更多背景。 我正在開發一個處理面對面約會的 SaaS 調度應用程序,但我們不知道具體位置在哪里。 我們解決這個問題的方法是,在 UI 和存儲的值中,每個約會都是 UTC,所以他們看到下午 5 點,select 下午 5 點,存儲為下午 5 點,最終應該作為下午 5 點的 Google 日歷事件共享。 如果用戶在不同的時區,它仍然會顯示下午 5 點(因為一切都是 UTC),但期望他們將在實際約會的預定位置的時區中。

我們正在從 sent.ics 附件切換到 Google 日歷,並且專門針對 Google 日歷的開始/結束休息時間使用相同的代碼。

谷歌日歷

創建日歷事件時,默認情況下會在當前時區創建它。

如果您希望多個用戶同時擁有相同的事件,您只需要確保每個用戶的日歷設置都在正確的時區上

如果您想在不屬於您自己的另一個時區創建事件,您可以將時區指定到 API

指定時間的時區。 (格式化為 IANA 時區數據庫名稱,例如“Europe/Zurich”。)對於重復事件,此字段是必需的,並指定擴展重復發生的時區。 對於單個事件,此字段是可選的,並指示事件開始/結束的自定義時區。

編輯

如果您正在創建自己的日程安排應用程序並希望在 Google 日歷上顯示這些事件,您可以嵌入具有特定時區的日歷

但是,如果您正在與可能具有不同時區的多個用戶打交道,那么考慮這一點很重要。 您的應用程序設計在這方面存在缺陷,不支持這些用例。

您提到您正在銷售一個調度 SaaS 應用程序,所以我將使用它來生成一個商業案例來證明我的想法:

想象一下,您有一個 class,其中有 1 名教授(在美國)、1 名學生(也在美國)和另外 2 名來自日本的學生。

教授將在當地時間下午 1 點安排 class。

由於 class 在線,所有學生都需要在那個時候有空,無論他們的時區如何。

如果我想在每個人的日歷中添加一個事件,我不會在每個日歷上標記下午 1 點。 我將在用戶的時區標記等效時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM