0Pricing
Swift Academy · Aula

Fusos Horários e Localidades

Lide corretamente com diferenças de fuso e localidade.

Fusos Horários e Localidades é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Fusos horários e localidades

O mesmo instante de Date é exibido de maneiras diferentes ao redor do mundo. TimeZone e localidade determinam como ele é interpretado e mostrado.

Noções básicas de TimeZone

Um TimeZone representa um deslocamento em relação a UTC, além das regras de horário de verão. TimeZone.current é o fuso horário do dispositivo.

import Foundation

let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")

Criando um fuso específico

Crie um fuso nomeado com TimeZone(identifier:), por exemplo, "America/New_York" ou "Europe/Istanbul".

import Foundation

if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
    print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}

Deslocamentos em relação a GMT

secondsFromGMT(for:) fornece o deslocamento atual, que pode mudar ao longo do ano devido ao horário de verão.

import Foundation

let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")

Os fusos afetam os calendários

Defina o timeZone de um calendário para que os cálculos de dia e hora usem essa região em vez do padrão do dispositivo.

import Foundation

var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "UTC")!
let hour = cal.component(.hour, from: Date())
print("Hour in UTC between 0 and 23: \(0...23 ~= hour)")

Fusos na formatação

Um Date.FormatStyle pode conter um fuso horário específico para que a saída reflita essa região, independentemente das configurações do dispositivo.

import Foundation

let style = Date.FormatStyle(date: .omitted, time: .shortened)
    .timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)

Noções básicas de localidade

Uma Locale reúne o idioma e as convenções regionais: nomes dos meses, primeiro dia da semana e ordenação de números e datas.

import Foundation

let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")

Criando uma localidade

Crie uma localidade específica com Locale(identifier:), como "fr_FR" ou "tr_TR".

import Foundation

let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")

A localidade altera a saída

Aplicar uma localidade a um estilo de formatação altera os nomes dos meses e a ordenação. A mesma data é lida de forma diferente em cada idioma.

import Foundation

let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
    .locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)

Localidade e calendário juntos

A localidade também afeta o primeiro dia da semana e a numeração das semanas do calendário. Combine fuso, localidade e calendário para obter resultados totalmente corretos.

import Foundation

var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")

Armazenando em UTC e exibindo localmente

Boa prática: armazene e transmita datas em UTC e converta-as para o fuso e a localidade do usuário somente para exibição.

import Foundation

let instant = Date()
let utcStyle = Date.FormatStyle(date: .numeric, time: .standard)
    .timeZone(TimeZone(identifier: "UTC")!)
print("UTC display ready: \(!instant.formatted(utcStyle).isEmpty)")

Verificação rápida

Qual é a maneira recomendada de lidar com datas em diferentes regiões?

Recapitulação

TimeZone define o deslocamento em relação a UTC e as regras de DST, enquanto a localidade controla o idioma e a formatação regional. Ambos podem ser associados a calendários e estilos de formatação. Armazene as datas em UTC e converta-as para o fuso e a localidade locais somente ao exibi-las. Isso conclui o curso sobre datas e calendários.

Perguntas Frequentes

A aula “Fusos Horários e Localidades” é grátis?

Sim — o texto completo de “Fusos Horários e Localidades” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Fusos Horários e Localidades”?

Lide corretamente com diferenças de fuso e localidade. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Fusos Horários e Localidades”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O Tipo Date e Intervalos de Tempo
  2. Calendar e DateComponents
  3. Formatação de Datas
  4. Fusos Horários e Localidades
← Voltar para Swift Academy