Thursday 13 August 2015

32. Tanggal dan Waktu

Pada python dapat menangani tanggal dan waktu dengan beberapa cara. Penanggalan dan waktu pada format aslinya adalah sebuah perhitungan dari tanggal 1 (satu) Januari 1970. Pada tanggal tersebut merupakan waktu awal (jam 0, menit 0,detik 0 atau 0:00,00)yang disebut epoch. Karena waktu awalnya adalah 01 Januari 1970, maka python tidak bisa membuat tanggal sebelum tanggal tersebut, dan akan berakhir pada tahun 2038 (Pada kebanyakan waktu Unix), tetapi bila menggunakan C maka waktu akan berakhir tergantung pada C librarynya.

Python masih bergantung pada platform C library, sehingga tidak memiliki masalah dengan Y2K (Year 2000). Sehingga waktu yang diproses oleh python merupakan detik dari tahun 1970.
  1. >>> import time
  2. >>> aa=time.time()
  3. >>> aa
  4. 1439365167.0752
  5. >>> 


Untuk mendapatkan waktu variable aa kita bisa gunakan perintah time.localtime(aa).
  1. >>> waktulokal=time.localtime(aa)
  2. >>> print(waktulokal)
  3. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=12, tm_hour=14, tm_min=39, tm_sec=27, tm_wday=2, tm_yday=224, tm_isdst=0)
  4. >>> 


waktu yang ditunjukan pada variable waktulokal bukanlah waktu saat ini, tetapi waktu ketika variable aa dibuat. Bila ingin realtime kita pergunakan:
  1. >>> print(time.localtime(time.time()))
  2. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=12, tm_hour=14, tm_min=52, tm_sec=55, tm_wday=2, tm_yday=224, tm_isdst=0)
  3. >>> 


Format waktu yang ditunjukan diatas, bukan format yang kita lihat sehari-hari. Sekarang kita buat format yang biasa kita lihat sehari-hari:
  1. >>> formatbiasa=time.asctime(time.localtime())
  2. >>> print(formatbiasa)
  3. Wed Aug 12 14:58:52 2015
  4. >>> 


Walaupun tidak sama dengan format indonesia kita masi bisa lihat yang mana tahun, bulan, hari, dan jamnya. Bila ingin kostum format, kita gunakan:
  1. >>> time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())
  2. 'Wed, 12 Aug 2015 08:08:13 +0000'
  3. >>> 


%a Singkatan nama hari
%A Nama hari
%b Singkatan nama bulan
%B Nama bulan
%c Format lokal
%d Tanggal 01 sampai 31
%H Jam, 24 jam, dari 00 - 24
%I Jam, 12 jam, dari 01 - 12
%j Tanggal dalam tahun, 001 - 366
%m Bulan, 1 - 12
%M Menit, 00 - 59
%p AM - PM *1
%S Detik, 00 - 59 *2
%U Minggu dalam tahun, 00 – 53, Minggu 0 adalah hari minggu pertama *3
%w Minggu, 0 (minggu) – 6 (sabtu)
%W '= %U *3
%x Tanggal lokal
%X Waktu lokal
%y Tahun, 00 - 99
%Y Tahun
%z Selisih waktu dari UTC/GMT -23:59 - +23:59
%Z Nama zona waktu
%% Karakter '%'


keterangan *:



  1. Ketika digunakan dengan strptime () fungsi,% p direktif hanya mempengaruhi bidang output jam, jika % I direktif digunakan untuk mengurai jam.
  2. Kisaran 0-61; nilai 60 berlaku di timestamp mewakili lompatan detik dan nilai 61 didukung untuk alasan historis.
  3. Ketika digunakan dengan strptime () fungsi,% U dan W% hanya digunakan dalam perhitungan ketika hari minggu dan tahun yang ditentukan.
Pada modul time juga terdapat:


time.altzone :
Offset zona DST (Daylight saving time) lokal, dalam detik positip di barat dari UTC,dan negatif jika zona waktu DST lokal timur dari UTC (seperti di Eropa Barat, termasuk Inggris).
Digunakan untuk daylight yang tidak nol (0).
time.asctime([t]):
Mengkonversi tupel atau struct_time mewakili waktu yang dikembalikan oleh gmtime() atau localtime() menjadi string: 'Sun Jun 2023: 21: 05 1993'.
Jika t tidak disediakan, waktu akan dikembalikan sebagai localtime().
Lokal tidak digunakan oleh asctime ().
time.clock():
Pada Unix, waktu prosesor sekarang sebagai angka floating point dinyatakan dalam detik. Ketepatannya sangat tergantung pada "waktu prosesor" pada  fungsi C dengan nama yang sama.
Pada Windows, fungsi ini mengembalikan detik jam berlalu sejak panggilan pertama melalui fungsi ini, yang merupakan angka floating, berdasarkan fungsi Win32 QueryPerformanceCounter().
Resolusi biasanya lebih baik dari satu mikrodetik.
Tidak ada update sejak versi 3.3.
Perilaku fungsi ini tergantung pada platform: Gunakan perf_counter() atau process_time() dan bukan tergantung pada kebutuhan anda, untuk memiliki perilaku yang didefinisikan dengan baik. 
time.clock_getres(clk_id) :
Mengkembalikan resolusi (ketepatan) dari jam clk_id ditentukan. Tersedia untuk: Unix. Baru di versi 3.3.
time.clock_gettime(clk_id)
Mengembalikan saat jam clk_id ditentukan. Ketersediaan: Unix. Baru di versi 3.3.
time.clock_settime(clk_id, time)
Mengatur waktu dari jam clk_id ditentukan. Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_HIGHRES
Pada Solaris OS memiliki timer CLOCK_HIGHRES yang mencoba untuk menggunakan sumber hardware optimal, dan dapat memberikan mendekati nanodetik resolusi. CLOCK_HIGHRES adalah tidak dapat diatur.
Ketersediaan: Solaris. Baru di versi 3.3.
time.CLOCK_MONOTONIC
Jam yang tidak bisa diatur dan merupakan waktu monoton karena beberapa titik awal yang tidak ditentukan.
Ketersediaan: Unix.
Baru di versi 3.3.
time.CLOCK_MONOTONIC_RAW
Mirip dengan CLOCK_MONOTONIC, tetapi menyediakan akses ke waktu berbasis hardware yang tidak melakukan penyesuaian NTP.
Ketersediaan: Linux 2.6.28 atau yang lebih baru.
Baru di versi 3.3.
time.CLOCK_PROCESS_CPUTIME_ID
Resolusi tinggi per-proses waktu dari CPU.
Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_REALTIME
Seluruh sistem real-time clock. Pengaturan jam ini membutuhkan privileges yang sesuai.
Ketersediaan: Unix. Baru di versi 3.3.
time.CLOCK_THREAD_CPUTIME_ID
Thread khusus waktu jam CPU.
Ketersediaan: Unix. Baru di versi 3.3.
time.ctime([secs])
Mengkonversi waktu dinyatakan dalam detik sejak epoch ke string yang mewaili waktu setempat. Jika detik ini tidak disediakan atau None, waktu saat ini dikembalikan oleh time(). ctime(detik) setara dengan asctime(localtime (detik)). Lokal tidak digunakan oleh ctime().
time.daylight
Jika DST digunakan
time.get_clock_info(name)
Mendapatkan informasi pada jam yang ditentukan sebagai objek namespace.
Nama jam didukung dan fungsi yang sesuai, untuk membaca nilai mereka adalah: 'clock':time.clock(), 'monotonic': time.monotonic(), 'perf_counter': time.perf_counter(), 'process_time': time.process_time(), 'waktu': time.time().
Hasilnya memiliki atribut sebagai berikut: adjustable: True jika jam dapat diubah secara otomatis (misalnya dengan daemon NTP) atau secara manual oleh administrator sistem, False jika tidak, pelaksanaan: Nama fungsi C yang mendasari digunakan untuk mendapatkan nilai jam monotonic : True jika jam tidak bisa mundur, False jika resolusi: resolusi jam di detik (float).
Baru di versi 3.3.
time.gmtime([secs])
Konversi waktu dinyatakan dalam detik sejak epoch untuk struct_time di UTC di mana dst selalu nol. Jika detik ini tidak disediakan atau None, waktu saat ini akan dikembalikan oleh time(). Sepersekian detik diabaikan.
time.localtime([secs])
Seperti gmtime(), tetapi mengkonversi ke waktu lokal. Jika detik ini tidak disediakan atau None, waktu saat ini sebagai dikembalikan oleh time(). dst diset dengan 1. Sebab DST berlaku untuk waktu yang diberikan.
time.mktime(t)
Ini adalah fungsi kebalikan dari localtime(). Argumennya adalah struct_time atau 9-tuple (karena dst diperlukan; menggunakan -1 sebagai bendera dst jika tidak diketahui) yang menyatakan waktu lokal, bukan UTC.
Ia mengembalikan floating point, untuk kompatibilitas dengan time(). Jika nilai masukan tidak dapat direpresentasikan sebagai waktu yang valid, baik OverflowError atau ValueError akan nyalakan (yang tergantung pada apakah nilai yang tidak valid ditangkap oleh Python atau C libarary). Tanggal lebih awal yang dapat menghasilkan suatu waktu tergantung platform.

time.monotonic()
Mengembalikan nilai (dalam detik pecahan) dari jam monotonic, yaitu sebuah jam yang tidak bisa mundur ke belakang. Jam tidak terpengaruh oleh pembaruan sistem jam. Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Pada versi Windows yang lebih tua dari Vista, monotonic() mendeteksi GetTickCount() bilangan bulat overflow (32 bit, roll-over setelah 49,7 hari). Hal ini meningkatkan epoch intern (referensi waktu) oleh 232 setiap kali overflow terdeteksi. Epoch disimpan di negara-proses lokal dan nilai ofmonotonic() mungkin berbeda dalam dua Python proses yang berjalan selama lebih dari 49 hari.
Pada versi yang lebih baru dari Windows dan di sistem operasi lain, monotonic() adalah sistem.
Ketersediaan: Windows, Mac OS X, Linux, FreeBSD, OpenBSD, Solaris. Baru di versi 3.3.
time.perf_counter()
Mengembalikan nilai (dalam detik pecahan) dari counter kinerja, yaitu sebuah jam dengan resolusi tertinggi yang tersedia untuk mengukur durasi singkat. Ini termasuk waktu berlalu selama sleep() dan seluruh sistem.
Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Baru di versi 3.3.
time.process_time()
Mengembalikan nilai (dalam detik pecahan) dari jumlah sistem dan pengguna CPU waktu proses saat ini. Ini tidak termasuk waktu berlalu selama sleep(). Ini adalah proses-lebar definisi. Titik referensi dari nilai yang dikembalikan tidak terdefinisi, sehingga hanya perbedaan antara hasil panggilan berturut-turut adalah valid.
Baru di versi 3.3.
time.sleep(secs)
Menangguhkan eksekusi thread dalam satuan detik. Argumen memungkinkan sejumlah floating point untuk menunjukkan waktu tidur yang lebih tepat. Waktu suspensi yang sebenarnya, kurang dari waktu yang minta karena sinyal tertangkap akan mengakhiri sleep() diikuti eksekusi penangkapan sinyal rutin. Juga, saat suspensi dapat lebih lama dari yang waktu diminta dikarenakan banyaknya aktivitas pada sistem.
time.strftime(format[, t])
Mengkonversi tupel atau struct_time dan dikembalikan oleh gmtime() atau localtime() menjadi string yang ditentukan oleh format argumen. Jika tis tidak disediakan, waktu saat ini sebagai dikembalikan oleh localtime(). Format harus string.
ValueError dinyalakan jika ada celah di t berada di luar jangkauan yang diperbolehkan.

time.strptime(string[, format])
mengurai sebuah string yang mewakili waktu sesuai dengan format. mengembalikan nilai dengan struct_time oleh gmtime() atau localtime().
Parameter format menggunakan teknik yang sama dengan strftime(); defaultnya "% a% b% d% H:% M:% S% Y" yang sama dengan format dikembalikan oleh ctime(). Jika string yang tidak dapat diurai menurut format, atau jika memiliki kelebihan data setelah diurai.
ValueError dinaikkan. Nilai-nilai default digunakan untuk mengisi data hilang ketika nilai-nilai yang lebih akurat tidak dapat disimpulkan adalah (1900, 1, 1, 0, 0, 0, 0, 1, -1). Keduanya (string dan format) harus string.


contoh:
time.altzone :
  1. >>>  a=time.altzone #waktu bagian menghasilkan detik
  2. >>>  a
  3. -28800
  4. >>> print(a/3600)  # a/3600 detik, menjadi satuan jam
  5. -8.0
  6. >>> 

time.asctime([t]):

  1. >>> b=time.localtime()
  2. >>> print(b)
  3. time.struct_time(tm_year=2015, tm_mon=8, tm_mday=15, tm_hour=16, tm_min=57, tm_sec=46, tm_wday=5, tm_yday=227, tm_isdst=0)
  4. >>> print(time.asctime(b))
  5. Sat Aug 15 16:57:46 2015
  6. >>> 


time.clock():
  1. >>> import time
  2. >>> print(time.clock())
  3. 2.108956421578983e-06
  4. >>> print(time.clock())
  5. 13.797055475044191
  6. >>> print(time.clock())
  7. 14.838135837180129
  8. >>> a=time.clock()
  9. >>> print(time.clock()-a)
  10. 14.869220908542275
  11. >>> 
time.ctime([secs]):
  1. >>> time.ctime(785415)
  2. 'Sat Jan 10 09:10:15 1970'
  3. >>> time.ctime(100000000)
  4. 'Sat Mar  3 16:46:40 1973'
  5. >>> aa=time.time()
  6. >>> aa
  7. 1439706269.77
  8. >>> time.ctime(aa)
  9. 'Sun Aug 16 13:24:29 2015'
  10. >>> 







1 comment:

  1. Sdara..saya mau tanya..saya ada buat projek benda jatuh bebas tetapi saya bingung dengan cara mengatur waktu mulai benda jatuh hingga mencapai tanah..projek dengan raspberry pi 3..Mohon pencerahannya..saya pemulah

    ReplyDelete