Também disponível em: English · Español · Français · العربية
Gerador de arquivo ICS: a data de fim é o dia seguinte
Preencha um evento, obtenha um arquivo .ics válido e veja os dois números: o último dia que você indicou e o fim que o arquivo registra.
O que é um arquivo .ics?
Um arquivo .ics é um evento de calendário escrito como texto puro. Todo programa de calendário lê o formato — Google Agenda, Outlook, Calendário da Apple, Thunderbird — porque é um padrão publicado e não o formato de uma empresa só, e é por isso que um evento enviado como anexo abre em qualquer lugar. Dentro dele há uma lista de linhas: um título, um início, um fim, talvez uma regra de repetição, cada uma escrita como um nome, dois-pontos e um valor.
É também um formato com uma armadilha famosa dentro, e este gerador foi feito para mostrá-la em vez de resolvê-la caladamente por você. O fim registrado num arquivo de calendário não é o último momento do evento, e sim o primeiro momento depois dele: o que o padrão chama de fim não inclusivo. Numa reunião com horário ninguém percebe, porque algo que termina às 10:00 já acabou às 10:00 e é exatamente o que se espera. Num evento de dias inteiros isso morde, porque um festival que vai de quarta a sexta precisa ser escrito como terminando no sábado.
A própria especificação desenvolve o exemplo, e os números valem a pena: um evento que vai de 28 de junho a 8 de julho de 2007 inclusive se escreve com fim em 9 de julho. Se errar, o arquivo sai um dia mais curto. Não há aviso, nenhum calendário recusa, e o evento simplesmente aparece sem o último dia.
Como usar
- Descreva o evento. Um título e, se quiser, um local e uma descrição. Escolha dias inteiros ou um horário específico; se escolher horário, decida como ele deve ser registrado: hora local sem âncora, um instante absoluto, ou um horário de relógio num fuso com nome que a ferramenta converte para você.
- Informe o último dia em que acontece. O campo pede o último dia que o evento realmente ocupa, porque é isso que uma pessoa sabe. O painel abaixo mostra essa data ao lado do fim que o arquivo registra, que é o dia seguinte. Os dois números ficam na tela ao mesmo tempo, então a conversão é visível em vez de algo em que você precisa confiar.
- Copie os bytes ou baixe o arquivo. A saída aparece exatamente como é escrita, inclusive onde as linhas longas são cortadas e continuadas. Dá para ir no sentido inverso também: mude para o modo de leitura, cole um arquivo e ele dirá o que cada data significa e qual é de fato o último dia.
Dois limites que discordam entre si
O mesmo formato delimita duas coisas e usa critérios opostos para cada uma. O fim de um evento é exclusivo, como acabamos de ver. A data de fim de uma regra de repetição é inclusiva: o padrão diz que ela delimita a recorrência de maneira inclusiva, então uma reunião semanal que termina em 2 de setembro acontece em 2 de setembro. Coloque as duas coisas no mesmo evento e você estará escrevendo uma data que significa até e outra que significa até o fim de, separadas por poucas linhas, sem nada na sintaxe que as distinga.
Uma repetição contada por número tem ainda a sua própria regra silenciosa: o início conta como a primeira ocorrência. Pedir três significa o início e mais duas, não o início e mais três. Por isso esta ferramenta lista as datas em vez de contar isso a você: a primeira linha é a data de início, e depois de vê-la você não lê mais um contador errado.
Nada disso é defeito do software de ninguém. As bibliotecas que montam esses arquivos pegam o fim que você entrega e o escrevem, que é exatamente o que devem fazer. O erro acontece um nível acima, na distância entre o que uma pessoa quer dizer com termina na sexta e o que o formato registra, e nenhuma biblioteca pode fechar essa distância porque ela nunca chega a ver o que você queria dizer.
Por que não há nome de fuso no arquivo
Se você digitar um horário num fuso com nome, esta ferramenta calcula o instante correspondente e registra esse instante. Ela não escreve o nome do fuso no arquivo, e a razão merece ser dita com clareza: o formato até permite que uma data cite um fuso pelo nome, mas só se o arquivo levar junto a definição completa desse fuso, com cada regra de horário de verão escrita no seu próprio bloco. Um nome sem definição não é um atalho, é um arquivo cujo sentido depende de um programa que você não pode inspecionar.
Registrar o instante é exato, não precisa de mais nada e qualquer calendário vai exibi-lo no fuso de quem abrir. Tem um custo honesto, inevitável pelo próprio desenho do padrão: uma reunião periódica presa a um instante não acompanha um fuso através de uma mudança de horário de verão. Umas nove da manhã semanais em Paris, registradas assim, aparecem como oito da manhã na semana seguinte ao atraso dos relógios. Isso foi calculado, não suposto. Se uma reunião periódica precisa ficar no mesmo horário local o ano todo, esse é o caso em que uma definição de fuso completa ganha o seu lugar.
Duas coisas menores que a ferramenta resolve em vez de mencionar. O horário de relógio que você digitar pode não existir — na primavera os relógios pulam por cima dele — ou pode acontecer duas vezes, no dia em que atrasam. Ambas são avisadas quando surgem, com a leitura usada declarada, em vez de escolher uma em silêncio.
O que a ferramenta não vai dizer
Ela não verifica se o seu evento faz sentido. Uma reunião que termina antes de começar, um título vazio, uma repetição que dura um século: tudo isso produz um arquivo perfeitamente válido, porque válido aqui significa bem formado e não sensato. O modo de leitura aponta o que dá para decidir a partir do texto e para por aí.
Ela escreve um evento só. Um arquivo de calendário pode conter muitos, além de alarmes, participantes, blocos de disponibilidade e documentos anexados, e este gerador não cobre nada disso. Ele também escreve um carimbo de tempo fixo em vez do momento atual, porque esse campo registra quando a descrição foi produzida e não tem relação com quando o evento acontece.
Linhas longas são cortadas e continuadas porque o padrão pede linhas de no máximo 75 bytes. Bytes, não caracteres, e é por isso que um título em inglês pode ser quase o dobro do comprimento de um em português ou em árabe antes de precisar de corte, e por isso que uma ferramenta que conta caracteres passa do limite com qualquer texto acentuado sem nada parecer errado. O contador embaixo da saída mede bytes, então dá para acompanhar.
Por que é grátis?
Montar um arquivo de calendário é juntar texto. Roda no seu navegador, então não há servidor no meio, nada a medir nem conta a criar.
Nada é enviado. O que você digita, e qualquer arquivo que colar para ler, fica nesta aba.