|
|
@@ -292,9 +292,21 @@ impl Environment {
|
|
|
|
|
|
fn determine_time_zone() -> TZResult<TimeZone> {
|
|
|
if let Ok(file) = env::var("TZ") {
|
|
|
- TimeZone::from_file(format!("/usr/share/zoneinfo/{}", file))
|
|
|
- }
|
|
|
- else {
|
|
|
+ TimeZone::from_file({
|
|
|
+ if file.starts_with("/") {
|
|
|
+ file
|
|
|
+ } else {
|
|
|
+ format!("/usr/share/zoneinfo/{}", {
|
|
|
+ if file.starts_with(":") {
|
|
|
+ // Unwrap is panic-free here because we've checked if file starts with colon
|
|
|
+ file.strip_prefix(":").unwrap()
|
|
|
+ } else {
|
|
|
+ file.as_str()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
TimeZone::from_file("/etc/localtime")
|
|
|
}
|
|
|
}
|