blob: 4e81f7ec6bda8291721353f1a8a16569bb8bbad8 [file] [edit]
// Copyright (c) 2015, the timezone project authors. Please see the AUTHORS
// file for details. All rights reserved. Use of this source code is governed
// by a BSD-style license that can be found in the LICENSE file.
import 'location.dart';
import 'location_database.dart';
import 'tzdb.dart';
/// File name of the Time Zone default database.
const String tzDataDefaultFilename = 'latest.tzf';
final _utc = Location('UTC', [minTime], [0], [TimeZone.UTC]);
final _database = LocationDatabase();
late Location _local;
/// Global TimeZone database
LocationDatabase get timeZoneDatabase => _database;
/// UTC Location
// ignore: non_constant_identifier_names
Location get UTC => _utc;
/// Local Location
///
/// By default it is instantiated with UTC [Location]
Location get local => _local;
/// Find [Location] by its name.
///
/// ```dart
/// final detroit = getLocation('America/Detroit');
/// ```
Location getLocation(String locationName) {
return _database.get(locationName);
}
/// Set local [Location]
///
/// ```dart
/// final detroit = getLocation('America/Detroit')
/// setLocalLocation(detroit);
/// ```
void setLocalLocation(Location location) {
_local = location;
}
/// Initialize Time zone database.
void initializeDatabase(List<int> rawData) {
_database.clear();
for (final l in tzdbDeserialize(rawData)) {
_database.add(l);
}
setLocalLocation(_utc);
}