How to Compare Times in Python Using the Time Library - Step by Step Guide

  • Context: Python 
  • Thread starter Thread starter dacruick
  • Start date Start date
  • Tags Tags
    Python Time
Click For Summary

Discussion Overview

The discussion revolves around comparing times in Python using the datetime library. Participants explore how to convert integer representations of hours and minutes into time objects for comparison purposes. The conversation includes technical challenges and code snippets related to this task.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant describes their goal of comparing times using the current time and specified start and end times represented as integers.
  • Another participant suggests using the datetime.time constructor to create time objects from the integer values for comparison.
  • A participant mentions encountering a TypeError when attempting to use the time constructor, indicating a potential issue with how libraries are imported or how objects are being called.
  • Further discussion includes a participant's attempt to convert float values representing time into a datetime format for easier comparison.
  • Another participant confirms that using dt.time() to convert the current time works for their needs but expresses frustration with converting floats into time format.

Areas of Agreement / Disagreement

Participants generally agree on the approach of using the datetime library to create time objects, but there are unresolved issues regarding specific errors encountered and the best way to handle float conversions.

Contextual Notes

Participants have not fully resolved the issues related to library imports and the specific TypeError encountered. There are also uncertainties about the conversion of float values to time formats.

Who May Find This Useful

Readers interested in Python programming, particularly those working with time manipulation and comparisons in their code.

dacruick
Messages
1,038
Reaction score
1
Currently I have a program in which I want to compare times. I have

dt = datetime.now()

x = dt.time()

which gives me the current time in Hours:Minutes:Seconds:MicroSeconds.

I also have variables HourStart, MinuteStart, HourEnd,MinuteEnd. Which are the hours and minutes that are the bounds of my program running.

I want to compare times. So I want to convert HourStart MinuteStart etc to time types. So if HourStart = 10 and MinuteStart = 30. I want to represent that as a time type being 10:30:00:000000

any help is appreciated
 
Technology news on Phys.org
The python datetime docs is full of info and examples. Generally, the docs are the best place to start looking for info on how to do anything.
 
dacruick said:
Currently I have a program in which I want to compare times. I have

dt = datetime.now()

x = dt.time()

which gives me the current time in Hours:Minutes:Seconds:MicroSeconds.

I also have variables HourStart, MinuteStart, HourEnd,MinuteEnd. Which are the hours and minutes that are the bounds of my program running.

I want to compare times. So I want to convert HourStart MinuteStart etc to time types. So if HourStart = 10 and MinuteStart = 30. I want to represent that as a time type being 10:30:00:000000

any help is appreciated

Unless I've got the wrong end of the stick, this appears to be very straightforward. Suppose that we have ints start_hour, start_min, end_hour, and end_min. You can construct time objects from these by calling the datetime.time constructor:

Code:
start_time = datetime.time(start_hour, start_min)
end_time  = datetime.time(end_hour, end_min)

You can then compare these to the time portion of a datetime.date object. For instance, if you define dt = datetime.now(), you can determine whether the end time is before now by

Code:
end_time < dt.time()
 
You've most likely got it right. I tried that already but I think I was having a lot of trouble with my libraries and how I'm calling my objects. I'll give it a shot
 
shoehorn said:
Unless I've got the wrong end of the stick, this appears to be very straightforward. Suppose that we have ints start_hour, start_min, end_hour, and end_min. You can construct time objects from these by calling the datetime.time constructor:

At the top of my program I've got the following libraries

from datetime import *
from time import *

and I did a little program just to test out your suggestion and received the following error:

TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
 
dacruick said:
At the top of my program I've got the following libraries

from datetime import *
from time import *

and I did a little program just to test out your suggestion and received the following error:

TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'


This could be one of several things. Could you post your code here so I can have a look?
 
shoehorn said:
This could be one of several things. Could you post your code here so I can have a look?

As of right now I don't have much of a code, but my issue is outside of the rest of my code anyways. I have a function that returns two floats, starttime and endtime.

basically what I am doing is this:

from datetime import *

dt=datetime.now()

while starttime < float(dt.strftime('%H')) + float(dt.strftime('%M')/60) < endttime:

so what I want to do is convert all of those floats into a datetime, for a more seemless comparison. thanks
 
I was able to use dt.time() to convert it to something like hours:minutes:seconds.microseconds, which works well for my purposes. But its quite annoying when i try to convert my floats into time format. thanks again.
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 17 ·
Replies
17
Views
2K
Replies
55
Views
7K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
6K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 0 ·
Replies
0
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
5K