dalam python 3 hanya: impor datetime dan kemudian d = datetime.today () - datetime.timedelta (days = days_to_subtract)
Alex
Ini bekerja dengan unit lain juga, saya sudah menggunakannya timedelta(minutes=12)misalnya.
Nagev
@legalalien: periksa apakah pernyataan impor Anda: import datetime as DT; DT.datetime.today()berfungsi pada Python 2 dan 3. Ini sama dengan DT.datetime.now().
Jika objek datetime Python Anda mengetahui zona waktu daripada Anda harus berhati-hati untuk menghindari kesalahan di sekitar transisi DST (atau perubahan dalam offset UTC karena alasan lain):
from datetime import datetime, timedelta
from tzlocal import get_localzone # pip install tzlocal
DAY = timedelta(1)
local_tz = get_localzone()# get local timezone
now = datetime.now(local_tz)# get timezone-aware datetime object
day_ago = local_tz.normalize(now - DAY)# exactly 24 hours ago, time may differ
naive = now.replace(tzinfo=None)- DAY # same time
yesterday = local_tz.localize(naive, is_dst=None)# but elapsed hours may differ
Secara umum, day_agodan yesterdaymungkin berbeda jika UTC mengimbangi zona waktu lokal telah berubah pada hari terakhir.
Misalnya, waktu musim panas / waktu musim panas berakhir pada Minggu 2-Nov-2014 pukul 02:00:00 di zona waktu America / Los_Angeles jika:
Hanya untuk menguraikan metode alternatif dan kasus penggunaan yang sangat membantu:
Kurangi 1 hari dari datetime saat ini:
from datetime import datetime, timedelta
print datetime.now()+ timedelta(days=-1)# Here, I am adding a negative timedelta
Berguna dalam Kasus ini , Jika Anda ingin menambahkan 5 hari dan kurangi 5 jam dari waktu saat ini. yaitu Apa Datetime 5 hari dari sekarang tetapi 5 jam lebih sedikit?
from datetime import datetime, timedelta
print datetime.now()+ timedelta(days=5, hours=-5)
Ini juga dapat digunakan dengan parameter lain misalnya detik, minggu, dll
Juga hanya fungsi bagus yang saya suka gunakan ketika saya ingin menghitung yaitu hari pertama / terakhir bulan lalu atau timedeltas relatif lainnya dll ...
Fungsi relativedelta dari fungsi dateutil (ekstensi kuat untuk lib datetime)
import datetime as dt
from dateutil.relativedelta import relativedelta
#get first and last day of this and last month)
today = dt.date.today()
first_day_this_month = dt.date(day=1, month=today.month, year=today.year)
last_day_last_month = first_day_this_month - relativedelta(days=1)print(first_day_this_month, last_day_last_month)>2015-03-012015-02-28
Jawaban:
Anda dapat menggunakan objek timedelta :
sumber
timedelta(minutes=12)
misalnya.import datetime as DT; DT.datetime.today()
berfungsi pada Python 2 dan 3. Ini sama denganDT.datetime.now()
.Mengurangi
datetime.timedelta(days=1)
sumber
Jika objek datetime Python Anda mengetahui zona waktu daripada Anda harus berhati-hati untuk menghindari kesalahan di sekitar transisi DST (atau perubahan dalam offset UTC karena alasan lain):
Secara umum,
day_ago
danyesterday
mungkin berbeda jika UTC mengimbangi zona waktu lokal telah berubah pada hari terakhir.Misalnya, waktu musim panas / waktu musim panas berakhir pada Minggu 2-Nov-2014 pukul 02:00:00 di zona waktu America / Los_Angeles jika:
kemudian
day_ago
danyesterday
berbeda:day_ago
tepat 24 jam yang lalu (relatif terhadapnow
) tetapi pada jam 11 pagi, bukan pada jam 10 paginow
yesterday
kemarin pukul 10 pagi tetapi 25 jam yang lalu (relatif terhadapnow
), bukan 24 jam.pendulum
modul menanganinya secara otomatis:sumber
Hanya untuk menguraikan metode alternatif dan kasus penggunaan yang sangat membantu:
Ini juga dapat digunakan dengan parameter lain misalnya detik, minggu, dll
sumber
Juga hanya fungsi bagus yang saya suka gunakan ketika saya ingin menghitung yaitu hari pertama / terakhir bulan lalu atau timedeltas relatif lainnya dll ...
Fungsi relativedelta dari fungsi dateutil (ekstensi kuat untuk lib datetime)
sumber
Modul panah genial ada
keluaran:
sumber