[Lazarus] Google Calendar API TEvent start or _end (TDatetime) question

Francesco Sammarco francesco.sammarco at gmail.com
Thu Jun 4 09:02:41 CEST 2020


if I change my code in this mode, and change Google Calendar configuration,
with Greenwich meridian, I see correct result on Google Calendar. But I'm
not on Greenwich meridian.


I edited the demo calendar. I added a button and inside I put the following
code.

procedure TMainForm.Button1Click(Sender: TObject);
var
  Entry     : TEvent;
  Insert    : TEvent;
  start_e   : TEventDateTime;
  end_e     : TEventDateTime;
begin
  if LBCalendars.ItemIndex<0 then
    Exit;

  start_e := TEventDateTime.Create();
  end_e   := TEventDateTime.Create();

  start_e.dateTime   := EncodeDateTime(2020,6,3,19,0,0,0);
  start_e.timeZone   := 'Europe/London';
  end_e.dateTime     := IncHour(start_e.dateTime,2);
  end_e.timeZone     := 'Europe/London';

  Entry := TEvent.Create();
  Entry.summary               := 'My test';
  Entry.description           := 'My test';
  Entry.location              := 'My location';
  Entry.start                 := start_e;
  Entry._end                  := end_e;

  Entry.guestsCanInviteOthers   := false;
  Entry.guestsCanSeeOtherGuests := false;

  Entry.colorId := '';

  Insert := FCalendarAPI.EventsResource.Insert(FCurrentCalendar.id,Entry);

  SaveRefreshToken;


  Entry.Free;
  Entry:=nil;

  ShowMessage('Insert ' + Insert.id);

  Insert.Free;
  Insert:=nil;
end;

Il giorno mer 3 giu 2020 alle ore 15:59 Michael Van Canneyt <
michael at freepascal.org> ha scritto:

>
>
> On Wed, 3 Jun 2020, Francesco Sammarco wrote:
>
> > sorry and how do I set the date and time of the apartment ?!
>
> I would think this is sufficient:
>
>    Entry := FCalendarAPI.EventsResource.Get(CalendarFindedId, my_id_app);
>    start_e := TEventDateTime.Create();
>    end_e   := TEventDateTime.Create();
>    start_e.dateTime   := data_appuntamento;
>    start_e.timeZone   := 'Europe/Rome';
>
> Michael.
>
> >
> > Il mer 3 giu 2020, 15:55 Michael Van Canneyt <michael at freepascal.org> ha
> > scritto:
> >
> >>
> >>
> >> On Wed, 3 Jun 2020, Francesco Sammarco wrote:
> >>
> >>> sorry I don't understand, you say that just remove the lines where I
> >>> specify the timezone ?!
> >>
> >> No, remove the
> >>
> >> start_e.dateTime   := LocalTimeToUniversal(start_e.dateTime);
> >>
> >> I think it is not necessary if you set the timezone.
> >>
> >> Michael.
> >>
> >>
> >>>
> >>> Il mer 3 giu 2020, 14:51 Michael Van Canneyt <michael at freepascal.org>
> ha
> >>> scritto:
> >>>
> >>>>
> >>>>
> >>>> On Wed, 3 Jun 2020, Francesco Sammarco via lazarus wrote:
> >>>>
> >>>>> Hi everyone, I have the following problem. I have a calendar
> (Italian)
> >> to
> >>>>> sync with Google Calendar. With the following code I can work quite
> >> well.
> >>>>> If today (2020-06-03) I set a new appointment it is saved on google
> >>>>> calendar on the right day and time, but if for example: always today
> >> if I
> >>>>> set an appointment for December 10, 2020 at 9 am, I find myself there
> >>>>> appointment set on the right day but at 8 am. (So an hour behind) I
> >> think
> >>>>> it's due to the change between sunlight and daylight. Can anyone
> >> explain
> >>>> to
> >>>>> me how to solve the problem?
> >>>>>
> >>>>> Thank you
> >>>>> XinYiMan
> >>>>>
> >>>>>
> >>>>>
> >>>>> var
> >>>>>   start_e  : TEventDateTime;
> >>>>>   end_e    : TEventDateTime;
> >>>>>   Entry    : TEvent;
> >>>>> begin
> >>>>>            Entry := FCalendarAPI.EventsResource.Get(CalendarFindedId,
> >>>>> my_id_app);
> >>>>>
> >>>>>                     start_e := TEventDateTime.Create();
> >>>>>                     end_e   := TEventDateTime.Create();
> >>>>>
> >>>>>                     start_e.dateTime   := data_appuntamento;
> >>>>>                     start_e.dateTime   :=
> >>>>> LocalTimeToUniversal(start_e.dateTime);
> >>>>>                     start_e.timeZone   := 'Europe/Rome';
> >>>>
> >>>> If you set the timzeone explicitly, I don't think you must do a
> >>>> LocalTimeToUniversal,
> >>>> I think the timezone is then automatically taken into account. As I
> >>>> understand it you specify the timezone in dateTime or you set it in
> the
> >>>> timezone.
> >>>>
> >>>> Michael.
> >>>>
> >>>
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20200604/a718dca7/attachment.html>


More information about the lazarus mailing list