Проблема Google calender API
Я интегрировал Google calendar v3 api в свое приложение mvc и добавляю событие по пользовательской дате и времени.Мое приложение размещено на индийском сервере, а часовой пояс для календаря-это центральный часовой пояс, так как пользователь живет в США.Поэтому, какую бы дату я ни ввел в форму и ни отправил в календарь, она всегда меняет ее на время США.
Пожалуйста, помогите мне
Что я уже пробовал:
var folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage"); var credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets { ClientId = "xxxxxxxxx-xxxxxxx.apps.googleusercontent.com", ClientSecret = "xxxxxxx", }, new[] { CalendarService.Scope.Calendar }, "user", CancellationToken.None, new FileDataStore(folder)).Result; // Create the service. DateTime eventdate = Convert.ToDateTime(bdate); int evyear = eventdate.Year; int evmonth = eventdate.Month; int evday = eventdate.Day; DateTime eventtime = Convert.ToDateTime(btime); int evhour = eventtime.Hour; int evendhour = eventtime.Hour; int evmin = eventtime.Minute; int evendmin = evmin + 60; if (evendmin > 60) { evendmin = evendmin - 60; evendhour = evendhour + 1; } else if (evendmin == 60) { evendmin = 00; evendhour = evendhour + 1; } var service = new CalendarService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "ANNA'S RESTAURANT", }); var myEvent = new Event { Summary = "Name :" + Name + System.Environment.NewLine + "Person : " + pno, Description = "Phone No :" + phoneno + System.Environment.NewLine + "Special Request : " + srequest, Location = "607 Happy Valley Rd Glasgow , KY", Start = new EventDateTime { DateTime = new DateTime(evyear, evmonth, evday, evhour, evmin, 0, 0), TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").ToString() }, End = new EventDateTime { DateTime = new DateTime(evyear, evmonth, evday, evendhour, evendmin, 0, 0), TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").ToString() }, }; var recurringEvent = service.Events.Insert(myEvent, "primary"); recurringEvent.SendNotifications = true; recurringEvent.Execute();
Richard MacCutchan
Вы всегда должны использовать значения UTC для типов даты и времени. Вам нужно только преобразовать их в местное время, когда они отображаются.