def years_since_vernal_equinox(dt):
    """Fractional years since last March 20, noon UTC (assumed time of
    vernal equinox)."""
    year_start = type(dt)(dt.year, 3, 20, 12)
    year_end = type(dt)(dt.year+1, 3, 20, 12)
    return (dt - year_start).total_seconds() / (year_end - year_start).total_seconds()