Às 23:21 de 14/01/2026, Ben Bolker escreveu:
It seems not so much non-deterministic, as different on the first vs.
following invocations ...
$ cat tz.R
Sys.setenv(TZ="Europe/London")
for (i in 1:10) {
print(attr(as.POSIXlt(as.numeric(1:10)), 'tzone'))
$ Rscript tz.R
[1] "Europe/London" "GMT" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
$ Rscript tz.R
[1] "Europe/London" "GMT" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
$ Rscript tz.R
[1] "Europe/London" "GMT" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
[1] "Europe/London" "BST" "BST"
On 1/14/26 17:47, Michael Chirico via R-devel wrote:
As a test case I have code running 'as.POSIXlt(1:10)', which can
unfortunately produce non-deterministic results:
TZ=Europe/London R
attr(as.POSIXlt(as.numeric(1:10)), 'tzone')
# [1] "Europe/London" "GMT" "BST"
attr(as.POSIXlt(as.numeric(1:10)), 'tzone')
# [1] "Europe/London" "BST" "BST"
Is this intended behavior? I don't see this possibility described in
any of ?DateTimeClasses, ?strptime, ?timezones, or ?as.POSIXlt. Some
caching is mentioned around .sys.timezone, but the above snippets
don't have any relationship that I can see.
Mike C
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Hello,
This also happens with a different timezone.
(Note: Lisbon time is GMT, also.)
Sys.setenv(TZ="Europe/Lisbon")
for (i in 1:10) {
print(attr(as.POSIXlt(as.numeric(1:10)), 'tzone'))
}
[1] "Europe/Lisbon" "WET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
[1] "Europe/Lisbon" "CET" "WEST"
Hope this helps,
Rui Barradas
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel