Kotlin / kotlinx-datetime

KotlinX multiplatform date/time library
Apache License 2.0
2.42k stars 102 forks source link

Support obtaining the system timezone on old Debian-based distributions #430

Open dkhalanskyjb opened 2 months ago

dkhalanskyjb commented 2 months ago

From https://wiki.debian.org/TimeZoneChanges:

In Debian releases Sarge (3.1) and earlier, /etc/localtime was a symbolic link. It was changed to a regular file (a copy of a /usr/share/zoneinfo/ file) in Etch (4.0), and remained so until Stretch (9), at which time it was made a symbolic link again.

According to the dates from https://en.wikipedia.org/wiki/Debian_version_history, this means that some Debian releases between 2007-04-08 and 2020-07-18 used a regular file instead of a symlink for /etc/localtime, a behavior we don't currently support. Instead, the timezone name should be obtained from /etc/timezone, a Debian-specific file.

It's worth noting that the Debian releases in question are all past their long-term support guarantees and are considered old. Still, if they are still widespread, it may be worth it to include the required workaround.

TarunVishwakarma1 commented 1 month ago

Hey, I want to confirm the logic if I'm correct on a high level. If the /etc/localtime file exists then we get the data from this file else we move to /etc/timezone file. As both the file contains the zoneID in same formate it will not affect the logic.

Am I right ?