Snippets

Misha Behersky Python time travelling

Created by Misha Behersky
import datetime
import time
import calendar


def get_day_begin(date=None):
    """
    Get date representing some date (or current date) begin without timezone
    :return:
    """
    if date is None:
        date = datetime.datetime.now()
    date = date.replace(tzinfo=None, hour=0, minute=0, second=0, microsecond=0)
    return date


def get_date_without_timezone(date=None):
    """
    Get date for date (or current date) without timezone
    :return:
    """
    if date is None:
        date = datetime.datetime.now()
    date = datetime.datetime.now()
    date = date.replace(tzinfo=None)
    return date


def get_prev_month_first(date: datetime=None):
    """
    Return begin of the first day from previous month
    :return:
    """
    if date is None:
        date = get_day_begin()
    first_day = datetime.date(day=1, month=date.month, year=date.year)
    prev_month = first_day - datetime.timedelta(days=1)
    return datetime.datetime(year=prev_month.year, month=prev_month.month, day=1)


def convert_to_datetime(date_str, date_format):
    """
    Return datetime object by converting string with given format
    """
    assert isinstance(date_str, str)
    result = datetime.datetime.strptime(date_str, date_format)
    assert isinstance(result, datetime.datetime)
    return result


def convert_to_string(date, date_format):
    """
    Return string representation in given format for the date
    """
    assert isinstance(date, datetime.datetime)
    result = date.strftime(date_format)
    assert isinstance(result, str)
    return result


def timestruct_to_datetime(time_struct):
    """
    Converct time_struct e.g. time.localtime() to datetime
    """
    assert isinstance(time_struct, time.struct_time)
    result = datetime.datetime.fromtimestamp(time.mktime(time_struct))
    assert isinstance(result, datetime.datetime)
    return result


def get_date_info(date=None):
    """
    Print some useful properties of the given date
    """
    if date is None:
        date = datetime.datetime.now()
    print('Day number: %s' % date.day)
    print('Month number: %s' % date.month)
    print('Current year: %s' % date.year)
    print('Day of the year: %s' % date.timetuple().tm_yday)
    print('Day of week number: %s' % date.isoweekday())
    print('Week of year number: %s' % date.isocalendar()[1])

    print('Is leap year: %s' % calendar.isleap(date.year))


if __name__ == '__main__':
    date_str = '23/10/2016 15:32'  # 23 of October 2016 3:32 P.M.
    date_format = '%d/%m/%Y %H:%M'
    new_date_format = '%x %X'
    the_date = convert_to_datetime(date_str, date_format)
    print(the_date)
    print(convert_to_string(the_date, new_date_format))
    time_struct = time.localtime()
    print(time_struct)
    print(timestruct_to_datetime(time_struct))

    the_date = datetime.datetime.now()
    print(the_date)
    the_date = the_date.replace(day=the_date.day+1)
    today = datetime.date.today()
    get_date_info()

Comments (1)

  1. Linda Melson
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.