Skip to content

Data Types

Standar library dari python yang berhubungan dengan tanggal dan waktu adalah;

  • datetime
  • calender
  • zoneinfo
  • time

Date

Import date class dari datetime

from datetime import date

Membuat objek dari class date dan tipe data dari variabel yang menampung instansi dari class date

Code

today = date.today()
type(today)
<class 'datetime.date'>

Dibawah ini adalah objek dari datetime.date

Code

print(date)
2023-02-11

method ctime mengembalikan current time dalam bentuk string

Code

today.ctime*()
'Sat Feb 11 00:00:00 2023'

Method isoformat() mengembalikna nilai string dalam bentuk format ISO 8601, YYYY-MM-DD.

Code

today.isoformat()
'2023-02-11'

Objek datetime.date memliki day, month, dan year mengembalikan nilai hari, bulan dan tahun tipe int

Code

today.day
today.month
today.year
11
02
2023

Metho timetuple mengembalikan time tuple

Code

today.timetuple()
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=42, tm_isdst=-1)

Method weekday mengembalikan hari dari satu minggu dalam bentuk int,

  1. Monday
  2. Thursday
  3. Wednesday
  4. Tuesday
  5. Friday
  6. Saturday
  7. Sunday

Code

today.weekday()
5 # (1)!
  1. 5, karena hari ini code tersebut dijalankan adalah hari Sabtu heheh

Calendar

Kita dapat memanfaatkan method weekday dengan eskalasi return value tersebut dengan dictionary calender.day_name. Sebelum itu anda harus mengimport class calender terlebih dahulu

Code

import calendar

calendar.day_name[today.weekday()]
Saturday

Time

Module time menyediakan beberapa fungsi untuk memanipulasi waktu. Berbicara tentang waktu, ada dua standar yang merepresentasi waktu;

  1. Bilangan dalam bentuk detik (seconds) epoch, dalam UTC (GMT). Nilai tersebut dapat dalam bentuk integer atau floating point (pecahan). Nilai epoch telah terdefinisi, detik 0 menunjuk pada 01 Januari 1970.

  2. Nilai-nilai dalam bentuk tuple berisikan 9 bilangan, seperit year, month, day, hours, minutes, seconds, weekday, julian day (hari dalam satu tahun), dan dst (Day Light Saving Time, ditandai dengan -1, 0 atau 1)

Modul time memliki method ctime() yang dapat mengkonversi detik epoch kedalam string dalam local time.

Code

import time

time.ctime()
'Sat Feb 11 22:24:04 2023'

Modul ini juga memliki property daylight yang mengembalikan 0 jika malam hari dan 1 jika siang hari.

Code

time.daylight
0 # (1)!
  1. Karena saat ini malam makan akan mengambalikan nilai 0.

Epoch time sendiri dapat diambil nilainya menggunakan method time()

Code

time.time()
1676130239.1693265

Metohd gmtime() akan mengkonversi epoch kedalam time tuple UTC. Jika method ini tidak diberikan sebuah parameter maka akan menggunakan current time waktu GMT.

Code

time.gmtime()
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=11, tm_hour=15, tm_min=36, tm_sec=16, tm_wday=5, tm_yday=42, tm_isdst=0)

Code

time.gmtime(1999999999)
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=11, tm_hour=15, tm_min=52, tm_sec=9, tm_wday=5, tm_yday=42, tm_isdst=0)

Selain gmtime, modul ini juga memliki method yang sejenis namun tidak merepresentasi waktu GMT melainkan localtime, method tersebut adalah localtime. Jika method ini tidak diberikan sebuah parameter maka akan menggunakan current time pada localtime.

Code

time.localtime()
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=11, tm_hour=22, tm_min=52, tm_sec=9, tm_wday=5, tm_yday=42, tm_isdst=0)

GMT (Greemwich Mean Time) adalah rata-rata waktu surya yang dilihat dari Royal Greenwich Observatory (Observatorium Kerajaan di Greenwich), yang terletak di Greenwich, London, Inggris, yang melalui konvensi dikenal terletak di 0 derajat garis bujur.

Perbedaan antara GMT dengan Western Indonesia Time (WIB) sekitar tujuh jam. Dapat dilihat di tm_hour dari snippet diatas. tm_hour dari fungsi gmtime() 10 dan dari localtime() adalah 17, selisih 7 jam.

Datetime

Dengan module datetime ini, kita dapat mengambil nilai date saja atau time saja. Untuk membuat objek dari class ini dapat menggunakan 3 cara;

Info

Untuk menggunakan modul datetime anda harus mengimportnya from datetime import datetime

  1. Menggunakan method now()

    Code

    datetime.now()
    
    datetime.datetime(2023, 2, 11, 23, 16, 34, 533686)
    
  2. Menggunakan method utcnow()

    Code

    datetime.utcnow()
    
    datetime(2023, 2, 11, 16, 16, 34, 733540)
    
  3. Memberikan 3 parementer wajin (year, month, dan day) pada datetime()

    Code

    datetime(2023,12,10)
    
    datetime.datetime(2023, 12, 10, 0, 0)
    

Play With Datetime

Katakan kita ingin mengetahui perbedaan dari dua tanggal, anda dapat mengurangi objek datetime pertama dengan objek datetime lainnya.

Sebagai simulasi kita akan membuat datetime tanggal kelahiran Faris dan Noah dan kita ingin mengetahui perbedaan umur mereka

Code

from zoneinfo import ZoneInfo
dt_f = datetime(year=2021, month=10, day = 13, hour=0, minute=23, tzinfo=ZoneInfo("Asia/Jakarta"))
dt_n = datetime(year=2020, month=5, day = 11, hour=11, minute=30, tzinfo=ZoneInfo("Asia/Jakarta"))

diff = dt_f - dt_n

print(f'Selisih hari lahir Faris dan Noah {diff.days} hari')
print(f'Selisih detik lahir Faris dan Noah {diff.total_seconds()} hari')
Selisih hari lahir Faris dan Noah 519 hari
Selisih detik lahir Faris dan Noah 44887980.0 hari

Variabel dt_f dan dt_n diatas bertipe datetime.datetime, akan tetapi operasi pengurangan kedua tabel tersebut menghasilkan tipe data lain, yaitu timedelta.

Code

print(type(dt_f))
print(type(dt_n))
print(type(diff))
<class 'datetime.datetime'>
<class 'datetime.datetime'>
<class 'datetime.timedelta'>

Timedelta adalah perbedaan nilai diatara dua nilai datetime. Anda juga dapat membuat objek timedelta menggunakan constructor dari timedelta. Anda harus mengimport nya dengan script dibawah ini

from datetime import timedelta

Semua argumen untuk membuat objek timedelta opsional.

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

Misalkan, anda ingin megetahui umur Faris 5000 hari dari kelahiran sudah berapa tahun

Code

limaRibuHari = timedelta(days=5000)
umurFaris = dt_f + limaRibuHari
print(umurFaris)
2035-06-22 00:23:00+07:00

Parsing Between Different Date Tye

Liha lah tanggal ini 1977-11-24T19:30:13+01:00, itu adalah tanggal standard internasional, ISO. Banyak aplikasi diluarsana menggunakan standard penulisan ini. Pertanyaan, lalu bagaimana jika ingin belerja dengan objek datetime pada python ?

Pythonn dapat mengkonversi tipe date iso format kedalam objek datetime python menggunakan method fromisoformat()

Code

iso_date = '1977-11-24T19:30:13+01:00'
print(datetime.fromisoformat(iso_date))
1977-11-24 19:30:13+01:00

Dan python juga dapat memformat timestamp kedalam datetime menggunakna method fromtimestamp()

Code

time_stamp_now = time.time()
print(datetime.fromtimestamp(time_stamp_now, tz=ZoneInfo("Asia/Jakarta"))) # (1)!
  1. Menggunakan waktu Asia Jakarta
2023-02-12 00:15:26.170209+07:00