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