Bagaimana cara membuat DateTime sama dengan 15 menit yang lalu?

Jawaban:

232

impor datetime dan kemudian hal-hal ajaib timedelta:

In [63]: datetime.datetime.now()
Out[63]: datetime.datetime(2010, 12, 27, 14, 39, 19, 700401)

In [64]: datetime.datetime.now() - datetime.timedelta(minutes=15)
Out[64]: datetime.datetime(2010, 12, 27, 14, 24, 21, 684435)
Spacedman
sumber
1
NB, dengan Python 3 Anda harus melewati zona waktu untuk now()menghindari kesalahan tentang pengurangan waktu tanggal offset-naif dan offset-aware:datetime.datetime.now(datetime.timezone.utc)
nornagon
1
@nornagon yang sama sekali tidak berlaku di sini; tidak masalah apakah objek datetime sadar atau naif, pengurangan timedelta tetap berhasil.
Martijn Pieters
35
 datetime.datetime.now() - datetime.timedelta(minutes=15)
eduffy
sumber
11

Inilah yang harus dilakukan:

datetime.datetime.now() - datetime.timedelta(minutes = 15)

timedeltas dirancang khusus untuk memungkinkan Anda mengurangi atau menambah delta (perbedaan) ke datetimes.


sumber
7
from datetime import timedelta    
datetime.datetime.now() - datetime.timedelta(0, 900)

Actually 900 is in seconds. Which is equal to 15 minutes. `15*60 = 900`
Tauquir
sumber
Impor Anda tidak cocok dengan kode; Anda mengimpor timedeltatetapi kemudian menggunakan datetimeatribut. Impor modul, atau tambahkan jenisnya.
Martijn Pieters
7

Saya telah menyediakan dua metode untuk melakukannya selama beberapa menit serta selama bertahun-tahun dan berjam-jam jika Anda ingin melihat lebih banyak contoh:

import datetime
print(datetime.datetime.now())
print(datetime.datetime.now() - datetime.timedelta(minutes = 15))
print(datetime.datetime.now() + datetime.timedelta(minutes = -15))
print(datetime.timedelta(hours = 5))
print(datetime.datetime.now() + datetime.timedelta(days = 3))
print(datetime.datetime.now() + datetime.timedelta(days = -9))
print(datetime.datetime.now() - datetime.timedelta(days = 9))

Saya mendapatkan hasil sebagai berikut:

2016-06-03 16:04:03.706615
2016-06-03 15:49:03.706622
2016-06-03 15:49:03.706642
5:00:00
2016-06-06 16:04:03.706665
2016-05-25 16:04:03.706676
2016-05-25 16:04:03.706687
2016-06-03
16:04:03.706716
Mona Jalal
sumber
4

datetime.datetime.now() - datetime.timedelta(0, 15 * 60)

timedeltaadalah "perubahan waktu". Dibutuhkan hari sebagai parameter pertama dan detik untuk parameter kedua. 15 * 60detik adalah 15 menit.

Donald Miner
sumber
1

Jika Anda menggunakan time.time()dan menginginkan stempel waktu sebagai keluaran

Cukup gunakan

CONSTANT_SECONDS = 900 # time  in seconds (900 seconds = 15 min)

current_time = int(time.time())
time_before_15_min = current_time - CONSTANT_SECONDS

Anda dapat mengubah 900 detik sesuai waktu yang Anda butuhkan.

vivek dhamecha
sumber
1

hanya kode di bawah ini dengan Python 3.7 yang berfungsi untuk saya

from datetime import datetime,timedelta    
print(datetime.now()-timedelta(seconds=900))
Anandkumar
sumber
Ini tidak berbeda dengan jawaban yang jauh lebih tua di sini.
Martijn Pieters