BUG/TST: Add more timezone fixtures and use is_utc more consistently
State: closed

- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Was discussed a while back with @jreback to add more timezones to the `tz_aware_fixture`, added some less tested ones like:

- `dateutil.tz.tzlocal`
- `pytz.FixedOffset`

This uncovered some bugs with `tzlocal` especially near DST transitions.

Additionally, using `is_utc` more consistently for UTC checking across the codebase and no longer passing the string `'UTC'` around. Instead the UTC timezone object (i.e. `pytz.UTC` or `dateutil.tz.tzutc()`) is passed along. However, for single value conversion to/from UTC, `pytz.UTC` is used by default.

Labels:
name: Timezones
description: Timezone data dtype

Comments:
Hello @mroeschke! Thanks for submitting the PR.

 - There are no PEP8 issues in the file [`pandas/conftest.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/conftest.py) !

 - There are no PEP8 issues in the file [`pandas/core/arrays/datetimes.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/core/arrays/datetimes.py) !

 - There are no PEP8 issues in the file [`pandas/tests/indexes/datetimes/test_construction.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tests/indexes/datetimes/test_construction.py) !

 - There are no PEP8 issues in the file [`pandas/tests/indexes/datetimes/test_timezones.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tests/indexes/datetimes/test_timezones.py) !

 - There are no PEP8 issues in the file [`pandas/tests/indexes/datetimes/test_tools.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tests/indexes/datetimes/test_tools.py) !

 - There are no PEP8 issues in the file [`pandas/tests/scalar/timestamp/test_timestamp.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tests/scalar/timestamp/test_timestamp.py) !

 - There are no PEP8 issues in the file [`pandas/tests/scalar/timestamp/test_timezones.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tests/scalar/timestamp/test_timezones.py) !

 - There are no PEP8 issues in the file [`pandas/tseries/frequencies.py`](https://github.com/mroeschke/pandas/blob/069e6e1c16a02e52b8ca106d607e814c8f5211e6/pandas/tseries/frequencies.py) !


# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=h1) Report
> Merging [#23807](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/e405a105a717f55874ef8d5b4cbcdae0b8a21236?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/23807/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #23807      +/-   ##
==========================================
+ Coverage   92.28%   92.28%   +<.01%     
==========================================
  Files         161      161              
  Lines       51500    51501       +1     
==========================================
+ Hits        47528    47529       +1     
  Misses       3972     3972
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.68% <100%> (ø)` | :arrow_up: |
| #single | `42.31% <100%> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/tseries/offsets.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL3RzZXJpZXMvb2Zmc2V0cy5weQ==) | `96.98% <ø> (ø)` | :arrow_up: |
| [pandas/core/dtypes/dtypes.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZHR5cGVzL2R0eXBlcy5weQ==) | `95.61% <100%> (ø)` | :arrow_up: |
| [pandas/tseries/frequencies.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL3RzZXJpZXMvZnJlcXVlbmNpZXMucHk=) | `97.08% <100%> (+0.01%)` | :arrow_up: |
| [pandas/core/arrays/datetimes.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL2RhdGV0aW1lcy5weQ==) | `98.51% <100%> (ø)` | :arrow_up: |
| [pandas/io/pytables.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3B5dGFibGVzLnB5) | `92.3% <0%> (-0.05%)` | :arrow_down: |
| [pandas/io/formats/printing.py](https://codecov.io/gh/pandas-dev/pandas/pull/23807/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2Zvcm1hdHMvcHJpbnRpbmcucHk=) | `93.61% <0%> (+0.53%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=footer). Last update [e405a10...15ba5fb](https://codecov.io/gh/pandas-dev/pandas/pull/23807?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

looks good. does this add a lot more testing? e.g. now that we are having a bigger tz matrix (and use this fixture a fair amount)
Looking at two, 3.6 travis build, we will go from 36028 tests to 37606 tests (783.49 seconds to 931.50 seconds). 
thanks! of course if this does close any existing issues, pls update them.