File size: 1,050 Bytes
a6ddce9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""
AETERNA AI — Timezone & Date Helpers (Asia/Jakarta WIB)
"""

from datetime import datetime, timedelta, timezone
from typing import Optional
import pandas as pd

JAKARTA_TZ = timezone(timedelta(hours=7))

def get_jakarta_now() -> datetime:
    """Return current timestamp locked to Waktu Indonesia Barat (UTC+7)."""
    return datetime.now(JAKARTA_TZ)

def parse_flexible_date(date_input: Optional[str], default_year: int = 2026) -> Optional[pd.Timestamp]:
    """Parse various date formats into a standard pandas Timestamp."""
    if not date_input:
        return None
    date_input = str(date_input).strip()
    for fmt in ["%Y-%m-%d", "%d-%m-%Y", "%m-%d", "%d %B %Y", "%d %b %Y", "%B %d, %Y"]:
        try:
            parsed = datetime.strptime(date_input, fmt)
            if fmt == "%m-%d":
                parsed = parsed.replace(year=default_year)
            return pd.Timestamp(parsed)
        except ValueError:
            continue
    raise ValueError(f"Unrecognized date format: '{date_input}'. Supported format is YYYY-MM-DD.")