zsh-users
 help / color / mirror / code / Atom feed
From: Mark van Dijk <lists+zsh@internecto.net>
To: zsh-users@zsh.org
Subject: Re: can strftime show 'p.m.' instead of 'PM'?
Date: Sat, 28 Apr 2012 23:20:11 +0200	[thread overview]
Message-ID: <20120428232011.7b2c0e9e@internecto.net> (raw)
In-Reply-To: <29B9CC7BDEB94DA784265196AE5C7EEE@gmail.com>

On Sat, 28 Apr 2012 14:55:25 -0400
TJ Luoma <luomat@gmail.com> wrote:

> 
> Before I begin, I should say that I realize this may (seem to) be
> extremely picayune, but it consistently annoys me. Judge me as you
> will :-)

One shall never debate the validity of taste. Unless it regards
the dreadful modern popular music. But in my experience the
exploration of zsh is all about, erm, "picayunicies". Pardon my spanish
por favor.

> 
> `man strftime` says this:
> 
>      %p    is replaced by national representation of either "ante
> meridiem" (a.m.)  or "post meridiem" (p.m.)  as appropriate.
> 
>      %F    is equivalent to ``%Y-%m-%d''.
> 
>      %r    is equivalent to ``%I:%M:%S %p''.
> 
> However when I do this in zsh
> 
> $ strftime "%F %r" "$EPOCHSECONDS"
> 
> I get this:
> 
> 2012-04-28 02:50:24 PM
> 
> Ideally I would like "PM" to be "p.m." but I'd probably settle for
> "pm"
> 
> I tried using '%P' instead of '%p' (thinking that might invert the
> case) but that just gave me a literal 'P' instead.
> 
> I realize that I could use:
> 
> strftime "%F %r" "$EPOCHSECONDS" | tr '[A-Z]' '[a-z]'
> 
> or even
> 
> strftime "%F %r" "$EPOCHSECONDS" | sed 's#AM#a.m#g; s#pPM#p.m.#g'
> 
> but I wondered if there was a better (more efficient) way.
> 
> Thanks
> 
> TjL

I'm not sure if my idea will help you because from the looks of it this
also uses strftime - but I'll share the idea anyway.

You can use ZSH's prompt expansion. In the zshmisc man (although i
always just 'man zshall') you can find 'Date and time' for prompt
expansion. Further, zshexpn explains that you can expand these in brace
expansions á là:

% foo='%D{%F %r}'   -- this part comes from zshmisc
% print ${(%)foo}   -- this part comes from zshexpn
2012-04-28 10:59:15 PM

So if you expand further (there are probably better methods?):

% print ${${${(%)foo}/AM/a.m}/PM/p.m.}
2012-04-28 10:59:57 p.m.


One thing by the way that seems to not work quite correctly from the
looks of it:

literally print the prompt string:
% echo $(echo '%D{%F %r}')     
%D{%F %r}  -- expected, works

immediately formulate the time out of it:
% echo ${(%)$(echo '%D{%F %r}')} 
2012-04-28 }  -- not expected

Oh well, who can blame zsh for not keeping up with this funky stuff. :)

HTH
- Mark


      parent reply	other threads:[~2012-04-28 21:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-28 18:55 TJ Luoma
2012-04-28 21:10 ` Benjamin R. Haskell
2012-04-28 21:45   ` TJ Luoma
2012-04-28 21:20 ` Mark van Dijk [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120428232011.7b2c0e9e@internecto.net \
    --to=lists+zsh@internecto.net \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).