Python mengatur zona waktu ke est

Zona waktu untuk waktu. Stempel waktu yang sesuai akan dikonversi ke zona waktu Array/Indeks Datetime ini. Satu tz dari Tidak Ada akan mengonversi ke UTC dan menghapus informasi zona waktu

ReturnsArray atau IndexRaisesTypeError

Jika Datetime Array/Index adalah tz-naif

Lihat juga

Zona waktu yang memiliki offset variabel dari UTC

Lokalkan DatetimeIndex tz-naive ke zona waktu tertentu, atau hapus zona waktu dari DatetimeIndex yang sadar tz

Saya biasanya menemukan Python bahasa yang sangat serbaguna yang memungkinkan Anda melakukan banyak hal tanpa harus mengeluarkan banyak usaha. Namun saya mengalami beberapa masalah dengan modul datetime

Untuk tujuan dasar, modul datetime cukup memadai, tetapi sayangnya zona waktu tidak dapat dimanipulasi dan digunakan hanya dengan modul datetime. Misalnya tugas sederhana seperti mengonversi objek waktu tanggal dari satu zona waktu ke zona waktu lainnya bisa sangat menakutkan. Jadi saya akan menggunakan ini sebagai contoh untuk menunjukkan bagaimana Anda dapat menangani zona waktu

Objek datetime sederhana disebut naif zona waktu. Jadi ketika kita melakukan hal berikut

from datetime import datetime
now = datetime.now()

Ini membuat objek datetime, yang tidak memiliki informasi tentang zona waktu, dan menggunakan waktu sistem saat ini. Untuk menggunakan zona waktu dengannya, Anda perlu mengubahnya menjadi objek sadar zona waktu. Ini dapat dilakukan dengan menggunakan fungsi ganti sebagai berikut

# suppose you have the desired timezone in the variable tz    
now = now.replace(tzinfo = tz)
_

Ada dua hal, pertama bagaimana kita bisa mendapatkan objek tzinfo, dan kedua, apakah objek now berisi datetime yang benar sesuai dengan zona waktu yang telah Anda masukkan. Saya akan datang ke bagian pertama nanti, tetapi jawaban untuk bagian kedua adalah TIDAK

Apa yang dilakukan penggantian adalah mengisi bidang tzinfo, dan hanya menerima bahwa Anda telah memberikan zona waktu yang benar untuk waktu tanggal. Jadi misalkan Anda berada di India (zona waktu Anda adalah Asia/Kolkata) dan Anda menyetel tzinfo untuk Eropa/Berlin maka itu hanya akan menerima bahwa waktu sistem saat ini sebenarnya adalah sistem Eropa/Berlin, yang sebenarnya salah

Jadi jika Anda ingin mengonversi datetime dari satu zona waktu ke zona waktu lainnya, Anda harus menggunakan astimezone

now = datetime.now()
now = now.replace(tzinfo = tz)
now = now.astimezone(tz)

Di sini kita harus melihat bahwa kita tidak dapat langsung menggunakan astimezone karena datetime.now() memberi kita objek naif zona waktu dan kita dapat menggunakan zona waktu hanya pada objek yang sadar zona waktu. Jadi meskipun garis tengah sepertinya tidak berguna, kita tetap harus menggunakannya

Sekarang sampai pada titik bagaimana kita bisa mendapatkan zona waktu yang berbeda. Dan itu bukanlah tugas yang sangat lurus ke depan. Kita harus menggunakan dua modul untuk itu

# suppose you have the desired timezone in the variable tz    
now = now.replace(tzinfo = tz)
0 dan
# suppose you have the desired timezone in the variable tz    
now = now.replace(tzinfo = tz)
1 keduanya sangat berguna. Jadi jika kita perlu mendapatkan zona waktu saat ini maka kita akan melakukan hal berikut

from dateutil.tz import *
# This contains the local timezone 
local = tzlocal()
now = datetime.now()
now = now.replace(tzinfo = local)

# prints a timezone aware datetime
print now

Dan misalkan kita ingin mengonversi ini menjadi utc datetime maka kita akan melakukannya

utc = tzutc()
utc_now = now.astimezone(utc)
print utc_now
_

Menggunakan modul dateutil saja tidak memberi kita banyak fleksibilitas karena kita hanya bisa mendapatkan tzlocal() dan tzutc(), tetapi bagaimana jika kita harus mengonversi datetime ke zona waktu lain. Dalam hal ini kita harus menggunakan modul pytz. Misalkan Anda tahu bahwa zona waktu Anda adalah 'Asia\Kolkata' dan Anda ingin mengonversi waktu dari zona waktu lain, Anda akan melakukan hal berikut

import pytz

# assuming now contains a timezone aware datetime
tz = pytz.timezone('Asia/Kolkata')
your_now = now.astimezone(tz)
print your_now

Seperti yang saya katakan sebelumnya, modul dateutil dan pytz cukup berguna dan dapat digunakan untuk hal lain juga. Anda bebas menjelajahinya jika Anda mau. Sebagai contoh, misalkan Anda memiliki datetime dalam string sebagai 5 P. M. 21 Januari dateutil dapat menguraikannya menjadi objek datetime sebagai

from dateutil.parser import *
parse("5 P.M. 21st January")
_

Catatan. Jika Anda menggunakan dateutil dengan python2. x Anda cenderung mendapatkan kesalahan karena ada beberapa yang tidak kompatibel, jadi Anda juga harus menginstal python-dateutil==1. 5

pytz membawa basis data Olson tz ke dalam Python. Pustaka ini memungkinkan perhitungan zona waktu yang akurat dan lintas platform menggunakan Python 2. 4 atau lebih tinggi. Ini juga memecahkan masalah waktu ambigu di akhir waktu musim panas, yang dapat Anda baca lebih lanjut di Referensi Perpustakaan Python (

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
0)

Hampir semua zona waktu Olson didukung

Catatan

Pustaka ini berbeda dari API Python yang terdokumentasi untuk implementasi tzinfo; . Selain itu, jika Anda melakukan aritmatika tanggal pada waktu lokal yang melewati batas DST, hasilnya mungkin zona waktu yang salah (mis. kurangi 1 menit dari 27-10-2002 1. 00 EST dan Anda mendapatkan 2002-10-27 0. 59 bukan yang benar 27-10-2002 1. 59 EDT). Metode

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
_2 disediakan untuk memperbaikinya. Sayangnya masalah ini tidak dapat diselesaikan tanpa memodifikasi implementasi datetime Python (lihat PEP-431)

Instalasi

Paket ini dapat diinstal dari a. file telur menggunakan setuptools, atau dari tarball menggunakan distutils Python standar

Jika Anda menginstal dari tarball, jalankan perintah berikut sebagai pengguna administratif

python setup.py install

Jika Anda menginstal menggunakan setuptools, Anda bahkan tidak perlu mengunduh apa pun karena versi terbaru akan diunduh untuk Anda dari indeks paket Python

easy_install --upgrade pytz

Jika Anda sudah memiliki. file telur, Anda juga bisa menggunakannya

easy_install pytz-2008g-py2.6.egg

Contoh & Penggunaan

Aritmatika waktu dan tanggal yang dilokalkan

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'

Perpustakaan ini hanya mendukung dua cara membangun waktu lokal. Yang pertama adalah menggunakan metode

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
_1 yang disediakan oleh pustaka pytz. Ini digunakan untuk melokalkan datetime yang naif (datetime tanpa informasi zona waktu)

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
_

Cara kedua membangun waktu lokal adalah dengan mengonversi waktu lokal yang ada menggunakan metode

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
4 standar

>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'

Sayangnya menggunakan argumen tzinfo dari konstruktor datetime standar "tidak berfungsi" dengan pytz untuk banyak zona waktu

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'

Aman untuk zona waktu tanpa transisi penghematan siang hari, seperti UTC

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt)
'2002-10-27 12:00:00 UTC+0000'

Cara yang lebih disukai untuk menangani waktu adalah dengan selalu bekerja dalam UTC, mengonversi ke waktu lokal hanya saat menghasilkan keluaran untuk dibaca oleh manusia

>>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
>>> loc_dt = utc_dt.astimezone(eastern)
>>> loc_dt.strftime(fmt)
'2002-10-27 01:00:00 EST-0500'

Pustaka ini juga memungkinkan Anda melakukan aritmatika tanggal menggunakan waktu lokal, meskipun lebih rumit daripada bekerja di UTC karena Anda perlu menggunakan metode

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
2 untuk menangani waktu musim panas dan transisi zona waktu lainnya. Dalam contoh ini,
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
_6 disetel ke instan saat waktu musim panas berakhir di zona waktu AS/Timur

>>> before = loc_dt - timedelta(minutes=10)
>>> before.strftime(fmt)
'2002-10-27 00:50:00 EST-0500'
>>> eastern.normalize(before).strftime(fmt)
'2002-10-27 01:50:00 EDT-0400'
>>> after = eastern.normalize(before + timedelta(minutes=20))
>>> after.strftime(fmt)
'2002-10-27 01:10:00 EST-0500'

Membuat waktu lokal juga rumit, dan alasan mengapa bekerja dengan waktu lokal tidak disarankan. Sayangnya, Anda tidak bisa begitu saja memberikan argumen

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
_7 saat membuat datetime (lihat bagian selanjutnya untuk detail lebih lanjut)

easy_install --upgrade pytz
0

Konversi antar zona waktu lebih mudah dilakukan, menggunakan metode zona waktu standar

easy_install --upgrade pytz
1

Anda dapat mengambil jalan pintas saat menangani sisi UTC dari konversi zona waktu.

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
2 dan
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
1 tidak benar-benar diperlukan bila tidak ada transisi waktu musim panas yang harus ditangani

easy_install --upgrade pytz
2

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0)) >>> print(loc_dt.strftime(fmt)) 2002-10-27 06:00:00 EST-0500 _7 API

Instance

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
7 yang dikembalikan oleh fungsi
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
2 telah diperluas untuk mengatasi waktu yang ambigu dengan menambahkan parameter
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
3 ke metode
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
4,
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
5 &&
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
6

easy_install --upgrade pytz
3

easy_install --upgrade pytz
4

Parameter

>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
_3 diabaikan untuk sebagian besar stempel waktu. Ini hanya digunakan selama periode ambigu transisi DST untuk menyelesaikan ambiguitas itu

easy_install --upgrade pytz
5

easy_install --upgrade pytz
6

easy_install --upgrade pytz
7

easy_install --upgrade pytz
8

Jika

>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
_3 tidak ditentukan, stempel waktu yang ambigu akan memunculkan pengecualian
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
9

easy_install --upgrade pytz
_9

easy_install pytz-2008g-py2.6.egg
_0

Masalah dengan waktu setempat

Masalah utama yang harus kita tangani adalah bahwa waktu tertentu dapat terjadi dua kali dalam setahun. Misalnya, di zona waktu AS/Timur pada Minggu pagi terakhir bulan Oktober, urutan berikut terjadi

  • 01. 00 EDT terjadi
  • 1 jam kemudian, bukannya 2. 00 pagi jam diputar mundur 1 jam dan 01. 00 terjadi lagi (kali ini 01. 00 EST)

Bahkan, setiap saat antara 01. 00 dan 02. 00 terjadi dua kali. Ini berarti bahwa jika Anda mencoba dan membuat waktu di zona waktu 'AS/Timur' sintaks datetime standar, tidak ada cara untuk menentukan apakah yang Anda maksud sebelum atau sesudah transisi penghematan waktu akhir siang hari. Dengan menggunakan sintaks khusus pytz, hal terbaik yang dapat Anda lakukan adalah membuat tebakan

easy_install pytz-2008g-py2.6.egg
_1

Seperti yang Anda lihat, sistem telah memilih satu untuk Anda dan ada kemungkinan 50% sistem akan keluar dalam satu jam. Untuk beberapa aplikasi, ini tidak masalah. Namun, jika Anda mencoba menjadwalkan rapat dengan orang-orang di zona waktu yang berbeda atau menganalisis file log, hal itu tidak dapat diterima

Solusi terbaik dan paling sederhana adalah tetap menggunakan UTC. Paket pytz mendorong penggunaan UTC untuk representasi zona waktu internal dengan menyertakan implementasi UTC khusus berdasarkan implementasi referensi Python standar dalam dokumentasi Python

Zona waktu UTC memisahkan menjadi instans yang sama, dan mengasinkan ke ukuran yang lebih kecil dari instans pytz tzinfo lainnya. Implementasi UTC dapat diperoleh sebagai pytz. dll., pytz. UTC, atau pytz. zona waktu('UTC')

easy_install pytz-2008g-py2.6.egg
_2

Perhatikan bahwa beberapa zona waktu lain biasanya dianggap sama (GMT, Greenwich, Universal, dll. ). Definisi UTC berbeda dari zona waktu lainnya, dan tidak setara. Untuk alasan ini, mereka tidak akan membandingkan hal yang sama dengan Python

easy_install pytz-2008g-py2.6.egg
_3

Lihat bagiannya, di bawah ini

Jika Anda bersikeras bekerja dengan waktu setempat, perpustakaan ini menyediakan fasilitas untuk membangunnya dengan jelas

easy_install pytz-2008g-py2.6.egg
_4

Jika Anda melewatkan None sebagai flag is_dst ke localize(), pytz akan menolak untuk menebak dan memunculkan pengecualian jika Anda mencoba membuat waktu yang ambigu atau tidak ada

Misalnya, 1. 30:00 pada tanggal 27 Oktober 2002 terjadi dua kali di zona waktu AS/Timur ketika jam ditempatkan kembali pada akhir Waktu Musim Panas

easy_install pytz-2008g-py2.6.egg
_5

Demikian pula, 2. 30 pagi pada tanggal 7 April 2002 tidak pernah terjadi sama sekali di zona waktu AS/Timur, karena jam dimajukan pada pukul 2. 00 pagi melewatkan satu jam penuh

easy_install pytz-2008g-py2.6.egg
_6

Kedua pengecualian ini berbagi kelas dasar yang sama untuk mempermudah penanganan kesalahan

easy_install pytz-2008g-py2.6.egg
_7

Kasus khusus adalah ketika negara mengubah definisi zona waktu mereka tanpa peralihan waktu musim panas. Misalnya, pada tahun 1915 Warsawa beralih dari waktu Warsawa ke waktu Eropa Tengah tanpa transisi penghematan siang hari. Jadi pada tengah malam tanggal 5 Agustus 1915 jam diputar mundur 24 menit menciptakan periode waktu yang ambigu yang tidak dapat ditentukan tanpa mengacu pada singkatan zona waktu atau offset UTC yang sebenarnya. Dalam hal ini tengah malam terjadi dua kali, tidak ada waktu selama periode waktu musim panas. pytz menangani transisi ini dengan memperlakukan periode ambigu sebelum peralihan sebagai waktu musim panas, dan periode ambigu setelahnya sebagai waktu standar

easy_install pytz-2008g-py2.6.egg
_8

Cara terbaik untuk membuat waktu selama periode waktu yang ambigu adalah dengan mengonversi dari zona waktu lain seperti UTC

easy_install pytz-2008g-py2.6.egg
_9

Cara Python standar untuk menangani semua ambiguitas ini bukan untuk menanganinya, seperti yang ditunjukkan dalam contoh ini menggunakan definisi zona waktu AS/Timur dari dokumentasi Python (Perhatikan bahwa implementasi ini hanya berfungsi untuk tanggal antara 1987 dan 2006 - disertakan untuk pengujian hanya. )

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
0

Perhatikan dua hasil pertama?

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
1

Informasi Negara

Mekanisme disediakan untuk mengakses zona waktu yang biasa digunakan untuk negara tertentu, dicari menggunakan kode negara ISO 3166. Ini mengembalikan daftar string yang dapat digunakan untuk mengambil instance tzinfo yang relevan menggunakan

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
0

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
2

Basis data Olson dilengkapi dengan kode negara ISO 3166 untuk pemetaan nama negara Inggris yang diekspos Pytz sebagai kamus

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
_3

Apa itu UTC

'UTC' adalah Waktu Universal Terkoordinasi. Ini adalah penerus, tetapi berbeda dari, Greenwich Mean Time (GMT) dan berbagai definisi Waktu Universal. UTC sekarang menjadi standar dunia untuk mengatur jam dan pengukuran waktu

Semua zona waktu lainnya ditentukan relatif terhadap UTC, dan termasuk offset seperti UTC+0800 - jam untuk menambah atau mengurangi dari UTC untuk mendapatkan waktu setempat. Tidak ada waktu musim panas yang terjadi di UTC, menjadikannya zona waktu yang berguna untuk melakukan aritmatika tanggal tanpa mengkhawatirkan kebingungan dan ambiguitas yang disebabkan oleh transisi waktu musim panas, negara Anda mengubah zona waktunya, atau komputer seluler yang menjelajahi beberapa zona waktu

Pembantu

Ada dua daftar zona waktu yang disediakan

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
1 adalah daftar lengkap nama zona waktu yang dapat digunakan

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
4

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
2 adalah daftar berguna, zona waktu saat ini. Itu tidak berisi zona usang atau zona historis, kecuali untuk beberapa yang saya anggap dalam penggunaan umum, seperti AS/Timur (buka laporan bug jika menurut Anda zona waktu lain layak disertakan di sini). Ini juga merupakan urutan string

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
5

Baik

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
2 dan
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
1 diurutkan menurut abjad

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
6

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
1 dan
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
2 juga tersedia sebagai set

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
7

Anda juga dapat mengambil daftar zona waktu yang digunakan oleh negara tertentu menggunakan fungsi

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
7. Ini membutuhkan kode negara dua huruf ISO-3166

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
8

Internasionalisasi - i18n/l10n

Pytz adalah antarmuka ke database IANA, yang menggunakan nama ASCII. Proyek Unicode Consortium's Unicode Locales (CLDR) menyediakan terjemahan. Paket l18n Thomas Khyn dapat digunakan untuk mengakses terjemahan ini dari Python

Lisensi

lisensi MIT

Kode ini juga tersedia sebagai bagian dari Zope 3 di bawah Lisensi Publik Zope, Versi 2. 1 (ZPL)

Saya senang merilis kode ini jika perlu untuk disertakan dalam proyek sumber terbuka lainnya

Versi Terbaru

Paket ini akan diperbarui setelah rilis basis data zona waktu Olson. Versi terbaru dapat diunduh dari Python Package Index. Kode yang digunakan untuk menghasilkan distribusi ini dihosting di launchpad. bersih dan tersedia menggunakan git

Bagaimana cara mendapatkan zona waktu dengan Python?

dari datetime impor datetime dari pytz import timezone tz = timezone('EST') datetime. now(tz) ## ini mengembalikan objek datetime yang menunjuk ke sekarang ## menurut objek info zona waktu yang diserahkan sebagai variabel tz.

Bagaimana cara mengubah zona waktu dengan Python?

Mengonversi Antar Zona Waktu . Use the datetime. metode astimezone() untuk mengonversi datetime dari satu zona waktu ke zona waktu lainnya. Metode ini menggunakan turunan dari objek datetime dan mengembalikan datetime baru dari zona waktu tertentu.

Bagaimana cara mengonversi satu zona waktu ke zona waktu lain dengan Python?

fungsi now () (mengembalikan tanggal dan waktu lokal saat ini) dan meneruskan fungsi zona waktu () (mendapatkan zona waktu dari lokasi tertentu) dengan zona waktu sebagai argumen untuk mengatakan 'UTC'. Format DateTime di atas menggunakan strftime() dan cetak. Konversikan waktu di atas ke zona waktu lain menggunakan datetime

Bagaimana Anda mengubah waktu UTC dengan Python?

Gunakan modul pytz, yang dilengkapi dengan daftar lengkap zona waktu + UTC. Cari tahu apa itu zona waktu lokal, buat objek zona waktu darinya, dan manipulasi serta lampirkan ke datetime yang naif. Terakhir, gunakan datetime. astimezone() metode untuk mengonversi datetime ke UTC .