Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
best way to convert UTC to local time?
- X-seq: zsh-users 17831
- From: "TJ Luoma" <luomat@xxxxxxxxx>
- To: "Zsh-Users List" <zsh-users@xxxxxxx>
- Subject: best way to convert UTC to local time?
- Date: Tue, 11 Jun 2013 17:51:54 -0400
- Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=from:to:subject:date:message-id :mime-version:content-type; s=smtpout; bh=LnGiu8j1PO4tgKo+gMe9K6 8QV7E=; b=RoEu6gv1D1MVhAzaZazPr5DzmlH3FcE92vqnSh2WKo0a+A2GkGATqX uqdEahdyWQxiJUa8tLMRycOzEUFDFU4AIv73Ps2P1JaPsAVpnGiTgzyBiVIqpetx JNNkPqSY03KHUBadCt4bM0A7JVFIs26VMNBK3nsN5cllmvKhKMwBA=
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
I am trying to write a script which will sort files into sub-folders
based on the date that the file was _added_ to the current folder it is
in.
This is what I have come up with:
zmodload zsh/datetime
for F in "$@"
do
# if the input IS NOT a file (i.e. is a link or directory), skip it
[[ -f "$F" ]] || continue
# see if the input from the user is readable, if not, go on to the
next one
[[ -r "$F" ]] || continue
# look for Spotlight metadata for "Date Added" (kMDItemDateAdded)
# This will be something like "2013-06-08 02:46:38 +0000"
DATE_ADDED_UTC=$(mdls -raw -name kMDItemDateAdded "$F")
# if we get '(null)' then the metadata doesn't exist. Which shouldn't
happen. But might.
[[ "$DATE_ADDED_UTC" == "(null)" ]] && continue
# If we get here, we have the date added, but that date is based on
UTC time,
# not local time (currently EDT), so we need to convert it.
# convert that timestamp to seconds-since-epoch
# this will give us something like '1370677598'
DATE_ADDED_UTC_EPOCH=$(TZ=UTC strftime -r "%Y-%m-%d %H:%M:%S +0000"
"$DATE_ADDED_UTC")
# convert that 'seconds-since-epoch' to a local time
# 2013-06-08
DATE_ADDED_LOCAL=$(strftime "%Y-%m-%d" "$DATE_ADDED_UTC_EPOCH")
echo "The file $F was added on $DATE_ADDED_LOCAL"
done
This works, but three separate `strftime` calls seems inefficient. I
mean, it's not like it takes a long time to run or anything, I'm just
wondering if there's a "better" way.
TjL
p.s. - as far as I know there's no other way to get the "Date Added"
info. If I'm wrong, please let me know :-)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author