import time
from datetime import datetime

import bugsnag
from dateutil import parser
import pytz
from dateutil.parser import ParserError

ist_tz = pytz.timezone('Asia/Calcutta')


def get_date_object(string):
    return parser.parse(string).date()


def get_datetime_object(string):
    if not string:
        return None

    try:
        return parser.parse(string)
    except ParserError:
        bugsnag.notify(Exception('Datetime ParseError - datetime_util'))
        return None


def get_date_string_yyyy_mm_dd(a_date):
    return a_date.strftime('%Y-%m-%d')


def get_epoch_secs():
    return int(time.time())


def now_ist():
    return datetime.now(ist_tz)


def get_now_ist_string():
    return now_ist().strftime("%Y-%m-%d %H:%M:%S")


def today():
    return now_ist().date()


def get_time_string_hh_mm_am(a_time):
    return a_time.strftime("%I:%M %p")


def get_date_string_dd_mmm_yyyy(a_date):
    return a_date.strftime("%d-%b-%Y")
