O arquivo .ics é um padrão aberto amplamente usado para o intercâmbio de eventos de calendário entre diferentes plataformas como Google Calendar, Outlook, Apple Calendar, entre outros. Ele é um arquivo de texto estruturado, simples e leve, que permite criar e distribuir convites de eventos de forma automática e eficiente.
Estrutura Mínima de um Arquivo .ics
Um arquivo iCalendar básico, contendo um único evento, segue a seguinte estrutura:
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20250709T201135Z
DTSTART:20250715T110000Z
DTEND:20250715T120000Z
SUMMARY:Reunião LGPD
LOCATION:Sala BOB
DESCRIPTION:Reunião para discutir pontos da LGPD
END:VEVENT
END:VCALENDAR
Explicação dos Campos Essenciais
BEGIN:VCALENDAR/END:VCALENDAR: Delimitam o início e o fim do calendário.VERSION:2.0: Especifica a versão do padrão iCalendar.CALSCALE:GREGORIAN: Define o calendário utilizado (gregoriano).BEGIN:VEVENT/END:VEVENT: Delimitam o início e o fim do evento.UID: Identificador único do evento, evita duplicidade.DTSTAMP: Data e hora da criação/modificação do arquivo, em UTC.DTSTART/DTEND: Data e hora de início e fim do evento, em UTC (indicado pelo sufixoZ).SUMMARY: Título do evento.LOCATION: Local do evento.DESCRIPTION: Descrição detalhada do evento.
Recomendações Práticas
- Utilize o horário em UTC para evitar problemas de fuso horário.
- Gere o
UIDde forma única, combinando, por exemplo, timestamp com domínio. - Envie o arquivo
.icscom o cabeçalho MIME correto para que clientes de e-mail reconheçam como convite de calendário.
Exemplo Rápido em PHP para Gerar um Arquivo .ics
<?php
$uid = uniqid() . '@devdata.com.br';
$dtstamp = gmdate('Ymd\THis\Z');
$dtstart = gmdate('Ymd\THis\Z', strtotime('2025-07-15 11:00:00'));
$dtend = gmdate('Ymd\THis\Z', strtotime('2025-07-15 12:00:00'));
$summary = "Reunião LGPD";
$location = "Sala BOB";
$description = "Reunião para discutir pontos da LGPD";
$ical = "BEGIN:VCALENDAR\r\n";
$ical .= "VERSION:2.0\r\n";
$ical .= "CALSCALE:GREGORIAN\r\n";
$ical .= "BEGIN:VEVENT\r\n";
$ical .= "UID:$uid\r\n";
$ical .= "DTSTAMP:$dtstamp\r\n";
$ical .= "DTSTART:$dtstart\r\n";
$ical .= "DTEND:$dtend\r\n";
$ical .= "SUMMARY:$summary\r\n";
$ical .= "LOCATION:$location\r\n";
$ical .= "DESCRIPTION:$description\r\n";
$ical .= "END:VEVENT\r\n";
$ical .= "END:VCALENDAR\r\n";
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=evento.ics');
echo $ical;
?>
Acessando esse script em um servidor PHP você gera e baixa um arquivo .ics pronto para ser usado como convite de evento.
