dersblog

Tarih Zaman Icin datetime

Python ile bazi datetime numaralari.

Bugunun tarihi

import datetime

print (datetime.datetime.now())

Class datetime uzerinde bir suru ek bilgi vardir, mesela sadece bugunun ayini almak icin

print (datetime.datetime.now().month)

Diger ogeler day, ya da year olabilir.

Bir dosyanin yaratilis tarihi icin (ve o tarihin gunu icin)

print (datetime.datetime.fromtimestamp(os.path.getctime("[DOSYA]")).day)

Java'dan gelen currentTimeInMillis() cagrisini normal tarihe donusturmek icin

millis = 1492161538887
from datetime import date
print date.fromtimestamp(millis/1000.0)

Sonuc

2017-04-14

Yilin haftasini bulmak

import datetime
print (datetime.date(2019, 1, 4).isocalendar()[1])
now = datetime.datetime.now()
print (datetime.date(now.year, now.month, now.day).isocalendar()[1])

İlk sonuç 1 olacaktır, çünkü Ocak 4'ün yılın kaçınci haftası olduğuna baktık, ve sonuç tabii ki 1. İkinci işlem içinde olduğumu güne göre hafta hesabı yapar.

String verisi ile tarih yaratmak,

import datetime
s = "10/10/11"
d = datetime.datetime.strptime(s, "%m/%d/%y")
print d
2011-10-10 00:00:00

Gun eklemek (ya da cikartmak)

print d + datetime.timedelta(days=10)
2011-10-20 00:00:00

Tekrar string'e cevirmek

print d.strftime('%Y-%m-%d')
2011-10-10

Ayri ayri yil, gun, vs vererek yaratmak,

d2 = datetime.datetime(1999, 1, 1)
print d2
1999-01-01 00:00:00

Bir tarih objesinin yil, gun, ay ogelerine bakmak,

print d2.year, d2.month, d2.day
1999 1 1

Zaman Farklari

Iki tarih arasindaki zaman farkini bulmak icin basit cikartma islemi yeterl

d1 = datetime.datetime(1994, 1, 1)
d2 = datetime.datetime(1999, 1, 1)

print d2-d1, type(d2-d1)

Sonuc

1826 days, 0:00:00 

Bu bir timedelta objesinden geliyor, bu objenin gecen zamani saniye olarak gosterme ozelligi de var

print (d2-d1).total_seconds()
157766400.0

Arrow, Pandas

Hem arrow hem pandas paketleri datetime işlenmesini destekliyor. Her iki paket ile herhangi bir formattaki zamanı alıp çevirebiliriz.

import arrow

arrow.get("2017-01-12T14:12:06.000")

Fakat üstteki yavaş olabilir,

import pandas as pd

arrow.get(pd.Timestamp("2017-01-12T14:12:06.000"))

Maya diye bir paket de işleri çok kolaylaştırıyor. Herhangi bir format'tan okumak, zaman dilimi değişimi gibi işler çok rahat.

import maya
s = "00:06:13 May 30, 2019 PDT"
print (s)
t = maya.parse(s).datetime(to_timezone='US/Eastern')
print (t.strftime('%Y-%m-%d %H:%M'))

Yukarı