struct tm *info;
time( &rawtime );
info = localtime( &rawtime );
strftime(timeStr,80,"%a %b %d %H:%M:%S %Z %Y", info);
Tue Aug 30 14:55:08 Pacific Daylight Time 2016
Tue Aug 30 14:55:08 PDT 2016
strftime gives no guarantee whether you'll get the full name or the abbreviation. It is implementation dependent. The C99 spec (and Microsoft's documentation) says:
%Z is replaced by the locale’s time zone name or abbreviation, or by no characters if no time zone is determinable.
AFAIK there is no standard C way to guarantee you'll get the time zone abbreviation. That assumes you use the system time zone database. You could ship with your own copy of the time zone database.
In general, time zone abbreviations are a bad idea because they're ambiguous. Skimming the list we find ACT, AMT, BST, ECT, GST, IST, LHST, MST, PST, and SST are all ambiguous. You're better off using the full name, the numeric offset (ie.
%z), or eschew time zones altogether and use UTC (particularly useful for logging).