Через TimeZone
ВыделитьKotlin
val timeZone = TimeZone.getDefault()
val timeZoneId = timeZone.id // например: "Europe/Moscow"
val offset = timeZone.rawOffset / (1000 * 60 * 60) // смещение в часахЧерез ZoneId (Рекомендуемый способ)
ВыделитьKotlin
import java.time.ZoneId
val zoneId = ZoneId.systemDefault()
val zoneIdString = zoneId.toString() // например: "Europe/Moscow"Через Calendar
ВыделитьKotlin
import java.util.Calendar
val calendar = Calendar.getInstance()
val timeZone = calendar.timeZone
val offset = timeZone.getRawOffset()Через LocalDateTime
import java.time.LocalDateTime
import java.time.ZoneId
val currentTime = LocalDateTime.now(ZoneId.systemDefault())Примеры использования
Получение названия часового пояса
ВыделитьKotlin
fun getUserTimeZone(): String {
return ZoneId.systemDefault().toString()
}Получение смещения от UTC
ВыделитьKotlin
fun getTimeZoneOffset(): Int {
val zone = TimeZone.getDefault()
return zone.getRawOffset() / (1000 * 60 * 60)
}Важные моменты
- Часовой пояс определяется автоматически на основе настроек устройства.
- Методы возвращают:
- Идентификатор часового пояса (например: “Europe/Moscow”).
- Смещение от UTC в часах.
- Информацию о переходе на летнее время.
Пример полного использования
ВыделитьKotlin
fun main() {
val zoneId = ZoneId.systemDefault()
println("Часовой пояс: $zoneId")
val timeZone = TimeZone.getDefault()
println("ID часового пояса: ${timeZone.id}")
println("Смещение от UTC: ${timeZone.getRawOffset() / (1000 * 60 * 60)} часов")
val currentTime = LocalDateTime.now(zoneId)
println("Текущее время: $currentTime")
}Этот код выведет информацию о текущем часовом поясе устройства, его смещении от UTC и текущем времени.