-1

I defined two helper methods in Python for setting start-time and end-time and want it converted into unix timestamp (epoch):

def set_epoch_start():
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    now = datetime.now(tz=timezone.utc)
    new_time = now.replace(hour=17, minute=0, second=0, microsecond=0)
    seconds = (new_time - unix_epoch).total_seconds()
    return int(seconds)


def set_epoch_end():
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    now = datetime.now(tz=timezone.utc)
    new_time = now.replace(hour=23, minute=0, second=0, microsecond=0)
    seconds = (new_time - unix_epoch).total_seconds()
    return int(seconds)

As of now, I have hard-coded the values for hours (17 and 23), but I want the replace method for start-time to add +1 hour and the replace method for end-time to add 2 hours.

Searching for help on this I came across timedelta i.e. timedelta(hours=2), but how can I add timedelta into my two functions above?

1 Answer 1

3

First refactor your code to eliminate (the two functions are very similar). Then you need to pass in now to have a stable reference:

from datetime import *

def epoch_offset(now, delta):
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    return int((now + delta - unix_epoch).total_seconds())

now = datetime.now(timezone.utc)
for offset in (1,2):
    print(epoch_offset(now, timedelta(hours=offset)))

and example output:

1724306428
1724302828

Instead of doing the epoch calculation consider just using the timestamp() method:

def epoch_offset(now, delta):
        return int((now + delta).timestamp())
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.