Files
gogo2/test_timezone_fix.py
2025-07-27 20:48:44 +03:00

102 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""
Test Timezone Fix
This script tests that historical data timestamps are properly converted to Europe/Sofia timezone.
"""
import asyncio
import pandas as pd
from datetime import datetime
from core.data_provider import DataProvider
async def test_timezone_fix():
"""Test the timezone conversion fix"""
print("=== Testing Timezone Fix ===")
# Initialize data provider
print("1. Initializing data provider...")
data_provider = DataProvider()
# Wait for initialization
await asyncio.sleep(2)
# Test different timeframes
timeframes = ['1m', '1h', '1d']
symbol = 'ETH/USDT'
for timeframe in timeframes:
print(f"\n2. Testing {timeframe} data for {symbol}:")
# Get historical data
df = data_provider.get_historical_data(symbol, timeframe, limit=5)
if df is not None and not df.empty:
print(f" ✅ Got {len(df)} candles")
# Check timezone
if 'timestamp' in df.columns:
first_timestamp = df['timestamp'].iloc[0]
last_timestamp = df['timestamp'].iloc[-1]
print(f" First timestamp: {first_timestamp}")
print(f" Last timestamp: {last_timestamp}")
# Check if timezone is Europe/Sofia
if hasattr(first_timestamp, 'tz') and first_timestamp.tz is not None:
timezone_str = str(first_timestamp.tz)
if 'Europe/Sofia' in timezone_str or 'EET' in timezone_str or 'EEST' in timezone_str:
print(f" ✅ Timezone is correct: {timezone_str}")
else:
print(f" ❌ Timezone is incorrect: {timezone_str}")
else:
print(" ❌ No timezone information found")
# Show time difference from UTC
if hasattr(first_timestamp, 'utcoffset') and first_timestamp.utcoffset() is not None:
offset_hours = first_timestamp.utcoffset().total_seconds() / 3600
print(f" UTC offset: {offset_hours:+.0f} hours")
if offset_hours == 2 or offset_hours == 3: # EET (+2) or EEST (+3)
print(" ✅ UTC offset is correct for Europe/Sofia")
else:
print(f" ❌ UTC offset is incorrect: {offset_hours:+.0f} hours")
# Show sample data
print(" Sample data:")
for i in range(min(3, len(df))):
row = df.iloc[i]
print(f" {row['timestamp']}: O={row['open']:.2f} H={row['high']:.2f} L={row['low']:.2f} C={row['close']:.2f}")
else:
print(" ❌ No timestamp column found")
else:
print(f" ❌ No data available for {timeframe}")
# Test current time comparison
print(f"\n3. Current time comparison:")
current_utc = datetime.utcnow()
current_sofia = datetime.now()
print(f" Current UTC time: {current_utc}")
print(f" Current local time: {current_sofia}")
# Calculate expected offset
import pytz
sofia_tz = pytz.timezone('Europe/Sofia')
current_sofia_tz = datetime.now(sofia_tz)
offset_hours = current_sofia_tz.utcoffset().total_seconds() / 3600
print(f" Europe/Sofia current time: {current_sofia_tz}")
print(f" Current UTC offset: {offset_hours:+.0f} hours")
if offset_hours == 2:
print(" ✅ Currently in EET (Eastern European Time)")
elif offset_hours == 3:
print(" ✅ Currently in EEST (Eastern European Summer Time)")
else:
print(f" ❌ Unexpected offset: {offset_hours:+.0f} hours")
print("\n✅ Timezone fix test completed!")
if __name__ == "__main__":
asyncio.run(test_timezone_fix())