simple way to drop milliseconds from python datetime.datetime object [duplicate] - python

This question already has answers here:
How to truncate the time on a datetime object?
(18 answers)
Closed 7 years ago.
My colleague needs me to drop the milliseconds from my python timestamp objects in order to comply with the old POSIX (IEEE Std 1003.1-1988) standard. The tortured route that accomplishes this task for me is as follows:
datetime.datetime.strptime(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M:%S")
Is there a simpler way to end up with a datetime.datetime object for mongoDB than this?

You can use datetime.replace() method -
>>> d = datetime.datetime.today().replace(microsecond=0)
>>> d
datetime.datetime(2015, 7, 18, 9, 50, 20)

Related

How to convert datetime.datetime tzinfo to proper datetime in python? [duplicate]

This question already has answers here:
Generate RFC 3339 timestamp in Python [duplicate]
(7 answers)
ISO time (ISO 8601) in Python
(15 answers)
Closed last month.
I have a variable as -
present_date = datetime.datetime(2022, 9, 26, 13, 11, 35, tzinfo=datetime.timezone.utc)
Expected output -
2022-09-26T13:11:35Z
Any help would be appreciated.
You can use isoformat method to convert the datetime object to RFC 3339 format. i.e. your expected output format.
You can do the operation as follows:
present_date.isoformat('T')
Above code will give you output: 2022-09-26T13:11:35+00:00. This output is of type str.
The catch here is that as you mentioned you need Z in your expected output, so as per RFC 3339 format, Z is just a constant written for your timezone. i.e. the part after + sign in output. So you can just replace +00:00 with Z by using string operation.
The Final expression if you want Z in your output would be:
present_date.isoformat('T').replace("+00:00", "Z")
Above code will produce output: 2022-09-26T13:11:35Z

How to convert decimal time to normal time [duplicate]

This question already has answers here:
Converting unix timestamp string to readable date
(19 answers)
Closed 1 year ago.
I have a very silly question... how I can convert this timestring to a normal datetime?
20170509.54166667
Greetings.
You can do:
import datetime
datetime.datetime.fromtimestamp(20170509.54166667)
# which returns this:
datetime.datetime(1970, 8, 22, 11, 55, 9, 541667)

Subtract 3 months from datetime.now() [duplicate]

This question already has answers here:
How do I calculate the date six months from the current date using the datetime Python module?
(47 answers)
Closed 3 years ago.
How do I remove 3 months from the date? tried to use relativedelta, but I don't have the lib, so is there another way?
from datetime import datetime
now = datetime.now()
print("timestamp =", now)
You can use:
import datetime
a = datetime.datetime.now()
b = a - datetime.timedelta(weeks=12)
Note that you cannot give months as inputs, but weeks and days, and smaller
Perhaps, subtracting with datetime.timedelta can help you estimate the date:
import datetime
datetime.datetime(2019,5,31) - datetime.timedelta(3*365.25/12)
This result is not completely accurate, as it does not account for the leap years in the usual way, however for less precise calculations within a year should suffice. If you need accuracy you will need to use the method below.
For dateutil.relativedelta, you need to first install the module with pip install python-dateutil, and then use it in the following way:
import datetime
from dateutil.relativedelta import relativedelta
datetime.datetime(2019,5,31) - relativedelta(months=3)
If you want to perform complex operations on datetime objects, I can only recommend you to use the library arrow that will handle all the edge cases for you.
The documentation of this library is available here: https://arrow.readthedocs.io/en/latest/
For instance in your case:
>>> import arrow
>>> a = arrow.utcnow()
>>> a
<Arrow [2019-11-20T13:03:52.518238+00:00]>
>>> a.datetime
datetime.datetime(2019, 11, 20, 13, 3, 52, 518238, tzinfo=tzutc())
>>> b = a.shift(months=-3)
>>> b
<Arrow [2019-08-20T13:03:52.518238+00:00]>
>>> b.datetime
datetime.datetime(2019, 8, 20, 13, 3, 52, 518238, tzinfo=tzutc())

How to remove seconds from Python datetime object? [duplicate]

This question already has answers here:
How to truncate the time on a datetime object?
(18 answers)
How to display locale sensitive time format without seconds in python
(4 answers)
Closed 4 years ago.
I have a python datetime object that I want to display on a website, however the time shows in the format hh:mm:ss and I want to display it in the format hh:mm.
I have tried using the replace method as per the following:
message.timestamp.replace(second='0', microsecond=0)
However this doesn't get red of the seconds it just replaces it with hh:mm:00
Use strftime() function
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2018, 12, 27, 11, 14, 37, 137010)
>>> now = datetime.now()
>>> now.strftime("%H:%M")
'11:15'

Obtain the datetime object for the previous day at midnight [duplicate]

This question already has answers here:
What was midnight yesterday as an epoch time?
(7 answers)
Closed 5 years ago.
I have a datetime object in Python, for, let's say, 25/06/2017 11:22:33. I'd like to find a pythonic way of getting a datetime object from that one that would represent 24/06/2017 00:00:00.
I can think of:
day_before = now - datetime.timedelta(days=1,
hours=now.hour,
minutes=now.minute,
seconds=now.second)
But I was wondering if there is a more concise way.
from datetime import date, timedelta
yesterday = date.today() - timedelta(1)
From here.

Categories

Resources