diff --git a/docs/sphinx/source/whatsnew/v0.4.5.txt b/docs/sphinx/source/whatsnew/v0.4.5.txt index 16c97a83f5..7666d9a9a6 100644 --- a/docs/sphinx/source/whatsnew/v0.4.5.txt +++ b/docs/sphinx/source/whatsnew/v0.4.5.txt @@ -9,6 +9,7 @@ Bug fixes * Fix pandas 0.20 incompatibilities in Location.get_clearsky, solarposition.ephemeris (:issue:`325`) +* Fixes timezone issue in solarposition spa_c function (:issue:`237`) * Added NREL Bird clear sky model. (:issue:`276`) * Added lower accuracy formulas for equation of time, declination, hour angle and solar zenith. @@ -31,5 +32,6 @@ Contributors ~~~~~~~~~~~~ * Will Holmgren +* Marc Anoma * Mark Mikofski * Birgit Schachler diff --git a/pvlib/solarposition.py b/pvlib/solarposition.py index 8673090f6b..7ba6b4a0d2 100644 --- a/pvlib/solarposition.py +++ b/pvlib/solarposition.py @@ -182,7 +182,11 @@ def spa_c(time, latitude, longitude, pressure=101325, altitude=0, pvl_logger.debug('using built-in spa code to calculate solar position') - time_utc = time + # if localized, convert to UTC. otherwise, assume UTC. + try: + time_utc = time.tz_convert('UTC') + except TypeError: + time_utc = time spa_out = [] @@ -193,7 +197,7 @@ def spa_c(time, latitude, longitude, pressure=101325, altitude=0, hour=date.hour, minute=date.minute, second=date.second, - timezone=0, # must input localized or utc time + timezone=0, # date uses utc time latitude=latitude, longitude=longitude, elevation=altitude, @@ -202,7 +206,7 @@ def spa_c(time, latitude, longitude, pressure=101325, altitude=0, delta_t=delta_t )) - spa_df = pd.DataFrame(spa_out, index=time_utc) + spa_df = pd.DataFrame(spa_out, index=time) if raw_spa_output: return spa_df