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)

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)

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.


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`

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


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.


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.


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))

Ini tidak berbeda dengan jawaban yang jauh lebih tua di sini.
Martijn Pieters
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.