1) using parameter expansion flag '%'
2) zsh/stat module
3) zsh/datetime module - strftime
TZ=UTC in all cases
All methods in outputting a time string appear to use strftime. zsh/stat
doesn't say so in man page, but uses the same formatting.
TZ is not treated the same way in all three uses. Parameter expansion
and zstat need TZ to be exported to give the correct result. Whereas
strftime does not.
1) Using parameter expansion flag '%' to get current date/time
module zsh/datetime loaded Yes DT=${(%):-%D{%Y-%m-%d_%H:%M:%S.%N_%Z}}
TZ exported NOT 2022-01-06_17:08:34.957909030_CST
TZ exported Yes 2022-01-06_23:08:34.958007858_UTC
module zsh/datetime loaded NOT DT=${(%):-%D{%Y-%m-%d_%H:%M:%S.%N_%Z}
TZ exported NOT 2022-01-06_17:08:34.958192556_CST
TZ exported Yes 2022-01-06_23:08:34.958318194_UTC
2) Output from zstat:
TZ exported NOT 2021-07-25_13:53:11.000000000_CDT
TZ exported Yes 2021-07-25_18:53:11.000000000_UTC
3) Output from strftime:
TZ exported NOT 2021-07-25_18:53:11.000000000_UTC
TZ exported Yes 2021-07-25_18:53:11.000000000_UTC
Can anyone tell me why TZ needs to be exported for 1 and 2, but not 3?
Personally I prefer not to have to export TZ to get the desired result,
but that's just me. I don't know the reasoning with each.
Thank in advance for any info you can offer,
Jim