Python’da bir tarihten bir gün nasıl çıkarılır?

Bir datetime.

Bir datetime.datetime nesnemiz olsun. Bu nesneden bir gün çıkarmanın en iyi yolu nedir?

Timedelta nesnesi kullanabilirsiniz:

from datetime import datetime, timedelta
    
d = datetime.today() - timedelta(days=cikarilacak_gun_sayisi)

Saat dilimi duyarlı tarih

Python datetime nesneniz saat dilimine duyarlıysa, DST geçişleri (veya UTC değişiklikleri) ile ilgili hataları önlemek için dikkatli olmanız gerekir:

from datetime import datetime, timedelta
from tzlocal import get_localzone # pip install tzlocal

DAY = timedelta(1)
local_tz = get_localzone()   # yerel saat dilimi
now = datetime.now(local_tz) # saat dilimi duyarlı datetime nesnesi
day_ago = local_tz.normalize(now - DAY) # tam 24 saat öncesi, saat değişebilir
naive = now.replace(tzinfo=None) - DAY # aynı zaman
yesterday = local_tz.localize(naive, is_dst=None) # ancak geçen zaman değişebilir

Genel olarak, yerel saat dilimi için day_ago (bir gün öncesi) ve yesterday (dün) farklı olabilir.

Örneğin, gün ışığından yararlanma saati/yaz saati 2-Kasım-2014’te Amerika/Los_Angeles saat diliminde 02:00:00’de sona erer.

import pytz # pip install pytz

local_tz = pytz.timezone('America/Los_Angeles')
now = local_tz.localize(datetime(2014, 11, 2, 10), is_dst=None)
# 2014-11-02 10:00:00 PST-0800

bu durumda day_ago ve yesterday farklı olacaktır:

  • day_ago şimdiye göre tam olarak 24 saat önce ama saat bu sefer 11, 10 değil.
  • yesterday dün saat 10’da ama bu sefer 25 saat önce oldu, 24 saat değil.

pendulum modülü bunu otomatik olarak halleder:

>>> import pendulum  # $ pip install pendulum

>>> now = pendulum.create(2014, 11, 2, 10, tz='America/Los_Angeles')
>>> day_ago = now.subtract(hours=24)  # tam 24 saat önce
>>> yesterday = now.subtract(days=1)  # dün saat 10'da ama bu sefer 25 saat geçti

>>> (now - day_ago).in_hours()
24
>>> (now - yesterday).in_hours()
25

>>> now
<Pendulum [2014-11-02T10:00:00-08:00]>
>>> day_ago
<Pendulum [2014-11-01T11:00:00-07:00]>
>>> yesterday
<Pendulum [2014-11-01T10:00:00-07:00]>

Bu yazı topluluk tarafından oluşturuldu. Lisans bilgisine bakabilirsiniz. Yanlış veya eksik bilgileri düzenlemek için github üzerinden katkıda bulunabilirsiniz.

Kategoriler: Yazı, Python

Okumaya devam et!

Dosyalar, Klasörler, I/O

Verilerin depolanması, okunması veya iletilmesi ile ilgileniyorsak Python işimizi oldukça kolaylaştırır.

String Metotları

String nesneleri değişmezdir, yani bir listenin yapabildiği gibi yerinde değiştirilemezler.

Python’da Filtre (Filter)

filter, bazı ölçütlere göre, bir sıralı yapıdaki (liste gibi) öğeleri atmak/tutmak için kullanılır.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak.

koddla
Tema Mundana by WowThemes.net.