title: GMT/UTC offset in hours/minutes of a given timezone w/o daylight saving time (DST)
body: <p>I already saw some questions/answers related to this question for other programming languages or operating systems but I found no common solution for my specific scenario. I want to get the GMT offset of a given timezone (normal identifier like EDT, CET or Europe/Berlin) in a Linux shell script or in pure C.</p>
  
  <p>One easy solution would be:</p>
  
  <pre><code>$ TZ=":Europe/Berlin" date +%z
  </code></pre>
  
  <p>But this will print the <em>current</em> GMT offset (including DST if it's currently in use).</p>
  
  <p>Here a better example to show what I mean:</p>
  
  <pre><code>$ TZ=":Europe/Berlin" date +%z --date="1 Jan 2014"
  +0100
  
  $ TZ=":Europe/Berlin" date +%z --date="1 May 2014"
  +0200
  </code></pre>
  
  <p>I need an option to always get the non-DST value (here: +0100) for any country/city.</p>
  
  <p><strong>Other questions that could solve my problem and are related to this one:</strong></p>
  
  <p>How to find the correct non-DST timezone (Etc/GMT-1) of a given city (Europe/Berlin) w/o knowing the offset in advance?</p>
  
  <p>How do you generally know that DST is active at a given timestamp?</p>
  
  <pre><code>$ TZ=":Europe/Berlin" date --date="2014-01-01"
  Wed Jan  1 00:00:00 CET 2014
  
  $ TZ=":Europe/Berlin" date --date="2014-05-01"
  Thu May  1 00:00:00 CEST 2014
  </code></pre>
  
  <p>The identifiers CEST (Central European Summer Time) and CET (Central European Time) are maybe not commonly known in other parts of the world, so an option to simply get something like DST=1 or DST=0 would be better if someone needs it. Via zdump you can get isdst=0 or isdst=1 for all timestamps that change DST, but it's not so easily usable IMO.</p>