title: pytz utc conversion
body: <p>What is the right way to convert a naive time and a <code>tzinfo</code> into an UTC time?
  Say I have:</p>
  
  <pre><code>d = datetime(2009, 8, 31, 22, 30, 30)
  tz = timezone('US/Pacific')
  </code></pre>
  
  <p>First way, pytz inspired:</p>
  
  <pre><code>d_tz = tz.normalize(tz.localize(d))
  utc = pytz.timezone('UTC')
  d_utc = d_tz.astimezone(utc)
  </code></pre>
  
  <p>Second way, from <a href="http://www.djangosnippets.org/snippets/388/" rel="noreferrer">UTCDateTimeField</a></p>
  
  <pre><code>def utc_from_localtime(dt, tz):
      dt = dt.replace(tzinfo=tz)
      _dt = tz.normalize(dt)
      if dt.tzinfo != _dt.tzinfo:
          # Houston, we have a problem...
          # find out which one has a dst offset
          if _dt.tzinfo.dst(_dt):
              _dt -= _dt.tzinfo.dst(_dt)
          else:
              _dt += dt.tzinfo.dst(dt)
      return _dt.astimezone(pytz.utc)
  </code></pre>
  
  <p>Needless to say those two methods produce different results for quite a few timezones.</p>
  
  <p>Question is - what's the right way?</p>