This will print the date/time in some format. Compare the error rate of mine (v1 and v0) vs Custom. Then tell me by how much it has offset (seconds) for sunrise and sunset. Add as many metrics as possible for this, this will just print the sunrise/sunset for multiple years. Plot grapgs as well. (test.py) (v1 vs custom, v0 vs custom, v1 vs v0), Then print whichever is the best one v1 or v0.

test.py
```
from solar_calculator import calculate_sunrise_sunset, format_time
from solar_calculator_v0 import calculate_sunrise_sunset as calculate_sunrise_sunset_v0
from testbed import calculate_sunrise_sunset_astral
from datetime import datetime

if __name__ == "__main__":
    # Location coordinates
    latitude  = 13.0326372542501    # Latitude in degrees (positive for north)
    longitude = 77.5755860908572    # Longitude in degrees (positive for east)
    
    # Date and timezone information
    _, _, _ = 31, 12, 2024
    timezone_offset = 0  # UTC offset in hours (e.g., IST is UTC+5.5)
    timezone = 'UTC'
    
    for year in range(2023, 2025):
        for month in range(1, 13):
            print(f"{'-' * 50}")
            print(f"Month: {month}")
            for day in range(1, 31):
                print(f'Day: {day}')
                # Calculate sunrise and sunset times
                sunrise, sunset = calculate_sunrise_sunset(latitude, longitude, year, month, day, timezone_offset)
                sunrise_v0, sunset_v0 = calculate_sunrise_sunset_v0(latitude, longitude, year, month, day, timezone_offset)
                
                if sunrise is not None and sunset is not None:
                    # Format and display the results
                    print(f"Sunrise Custom V1: {format_time(sunrise)}")
                    print(f"Sunset Custom V1: {format_time(sunset)}")
                    print(f"Sunrise Custom V0: {format_time(sunrise_v0)}")
                    print(f"Sunset Custom V0: {format_time(sunset_v0)}")
                else:
                    # Handle cases where sunrise or sunset does not occur
                    print("Sunrise and sunset times not available for this location on the given date.")
                    
                date = datetime(year, month, day)
                sunrise_astral, sunset_astral = calculate_sunrise_sunset_astral(latitude, longitude, timezone, date)
                sunrise_astral_str = sunrise_astral.strftime("%dth %B %Y %I:%M:%S %p")
                sunset_astral_str = sunset_astral.strftime("%dth %B %Y %I:%M:%S %p")
                print(f"Sunrise Astral: {sunrise_astral_str}")
                print(f"Sunset Astral: {sunset_astral_str}")
                print(f"{'-' * 50}")
```

```
def format_time(time_in_hours, seconds=True):
    """
    Format time from decimal hours to HH:MM:SS AM/PM format.
    """
    hour = int(time_in_hours)
    remainder = time_in_hours - hour
    minute = int(remainder * 60)
    remainder = remainder * 60 - minute
    second = int(round(remainder * 60))

    if second >= 60:
        second -= 60
        minute += 1
    if minute >= 60:
        minute -= 60
        hour += 1
    hour %= 24

    # Determine AM or PM
    meridiem = "AM" if hour < 12 else "PM"
    # Convert to 12-hour format
    hour_display = hour % 12
    if hour_display == 0:
        hour_display = 12

    if seconds:
        return f"{hour_display}:{minute:02d}:{second:02d} {meridiem}"
    else:
        if second >= 30:
            minute += 1
            if minute >= 60:
                minute -= 60
                hour += 1
                hour %= 24
                meridiem = "AM" if hour < 12 else "PM"
                hour_display = hour % 12
                if hour_display == 0:
                    hour_display = 12
        return f"{hour_display}:{minute:02d} {meridiem}"
```

Return full test.py