Modul datetime digunakan terutamanya untuk mewakili tarikh, yang sering kita panggil tahun, bulan, hari, jam, minit dan saat Modul kalendar digunakan terutamanya untuk mewakili tahun, bulan, hari, hari dalam seminggu dan maklumat lain . Ia adalah mudah untuk pengguna memilih modul yang sesuai mengikut tujuan yang berbeza.
2 Mari mulakan dengan modul masaUntuk mempelajari modul masa, kita perlu mengetahui beberapa konsep berkaitan masa terlebih dahulu:
(1)zamanAndaikan kita ingin menyatakan masa sebagai bilangan milisaat, seperti 1,000,000 milisaat Kemudian ada masalah yang mesti diselesaikan Apakah titik permulaan 1,000,000 milisaat, iaitu apakah titik asas masa kita? Sebagai contoh, jika saya katakan anda mempunyai ketinggian 1.8 meter, ketinggian ini merujuk kepada tanah tempat anda berdiri. Titik rujukan masa ini ialah zaman Dalam sistem Unix, titik rujukan ini ialah titik masa pada 0:00 pada 1 Januari 1970.
(2)GMT, UTCKami berkata di atas bahawa zaman mewakili titik permulaan tahun 1970, jadi masa asas manakah berbanding tahun 1970 ini? Secara umumnya, ia adalah relatif kepada Waktu Greenwich, juga dipanggil waktu GMT (Masa Purata Greenwich), dan juga dipanggil UTC (Waktu Sejagat Selaras Mengapa pangkalan masa mempunyai dua nama? Mengikut sejarah, GMT didahulukan, kemudian UTC.
UTC ialah piawaian masa yang kami gunakan sekarang, dan GMT ialah piawai pengukuran masa lama. UTC mengira masa berdasarkan jam atom, manakala GMT mengira masa berdasarkan putaran dan revolusi Bumi.
Jadi, UTC boleh dianggap sebagai masa rujukan sebenar, dan sisihan GMT daripada UTC ialah 0.
Sebenarnya, komputer kami mempunyai modul perkakasan RCT, yang merekodkan masa UTC dalam masa nyata Modul ini dikuasakan oleh bateri yang berasingan dan tidak akan terjejas walaupun ia dimatikan.
Dengan asas masa zaman dan asas UTC, kami boleh mewakili masa dengan tepat.
(3)DST, tzoneWalaupun kita sudah boleh mewakili masa dengan tepat, dalam banyak kes, kita masih perlu menyesuaikan masa berdasarkan situasi sebenar di rantau ini Yang paling biasa ialah zon waktu, tzone, yang saya percaya semua orang biasa.
Pada masa ini, apabila kita menyebut masa 5:05, kita perlu menambah 5:05 dalam zon waktu yang mana untuk menerangkan masa dengan tepat.
Pelarasan masa lain ialah DST.
DST adalah singkatan dari Daylight Saving Time, yang bermaksud bahawa untuk menggunakan sepenuhnya cahaya siang dan mengurangkan penggunaan elektrik, masa dilaraskan secara buatan, yang bergantung pada dasar dan peraturan negara dan wilayah yang berbeza. Sebagai contoh, jika anda bangun pada pukul 7 pada musim sejuk, tetapi bangun pada pukul 6 pada musim panas, kemudian secara buatan menambah 1 jam pada masa apabila musim panas tiba, supaya anda masih berfikir anda bangun pada pukul 7 jam, tetapi sebenarnya ia adalah satu jam lebih awal.
Jadi, bagi kita yang ingin tahu, kita mesti bertanya, bagaimana python tahu nilai tzone dan DST? Jawapannya adalah melalui pembolehubah persekitaran.
Di sini kami hanya menggunakan Linux sebagai contoh untuk menerangkan.
Terdapat pembolehubah persekitaran TZ di Linux, nilainya serupa dengan ini:
CST+08EDT, M4.1.0, M10.5.0, rentetan ini boleh ditafsirkan seperti berikut, pisahkan dengan ruang dan bahagikannya kepada tiga bahagian
CST+08 EDT, M4.1.0,M10.5.0
CST di bahagian pertama mewakili nama zon waktu, iaitu Waktu Standard China, yang kita panggil waktu Beijing +8 bermaksud waktu Beijing ditambah 8 jam ialah waktu UTC
Bahagian kedua EDT mewakili nama DST Kami mengatakan bahawa DST adalah berbeza kerana dasar dan peraturan yang berbeza di pelbagai negara dan wilayah Anda juga boleh menambah nilai pelarasan masa selepas EDT seperti selepas CST, tetapi di negara kita hanya antara 1986 dan 1992. DST telah dilaksanakan untuk tempoh masa pada 2015, tetapi kini telah dimansuhkan, jadi tidak perlu menambah masa pelarasan kemudian.
Bahagian ketiga mewakili masa mula dan tamat pelaksanaan DST, kami tidak akan menerangkannya secara terperinci.
(4) Perwakilan masa, pemerolehan, penukaranKaedah asas untuk mendapatkan masa dalam modul masa ialah
t = time.time()
Ia mengembalikan bilangan saat dari zaman hingga sekarang (dinyatakan sebagai nombor titik terapung), menggunakan masa UTC.
Kami sememangnya ingin menukar bilangan saat ini ke dalam bentuk tahun, bulan, hari, jam, minit dan saat, dan penukaran ini terbahagi kepada dua jenis, satu masih menggunakan masa UTC, dan satu lagi menggunakan masa terlaras dalam zon waktu kita.
Modul masa memberi kita dua kaedah,
time. gmtime(t) time.localtime(t)
Kedua-duanya mengembalikan contoh kelas struct_time dengan sifat berikut:
Berbanding dengan masa yang dinyatakan dalam saat, ungkapan ini lebih sesuai untuk kita fahami.
Jika kedua-dua fungsi ini dipanggil tanpa lulus parameter, ia akan memanggil time.time() secara dalaman dan menggunakan saat yang dikembalikan untuk penukaran.
Sebaliknya, python juga menyediakan kaedah untuk menukar dua struct_times ini kepada saat.
Kaedahcalendar.timegm() digunakan untuk menukar struct_time UTC (objek kembali gmtime) kepada bilangan saat bermula dari zaman
time.mktime() digunakan untuk menukar objek struct_time (iaitu, objek kembali masa tempatan) yang dilaraskan dengan zon masa ke dalam bilangan saat bermula dari zaman
Maksudnya, kaedah mktime akan mencari zon waktu dan maklumat DST dalam sistem, dan menggunakan maklumat ini untuk melaraskan struct_time dan kemudian menukarnya menjadi saat.
Satu lagi keperluan biasa ialah menukar antara masa dan rentetan yang mewakili masa.
Strftime dan strptime dalam modul masa digunakan untuk ini.
Semua orang harus tahu maksudnya dengan melihat nama mereka,
strftime ialah masa format rentetan, digunakan untuk memformat masa menjadi rentetan
strptime ialah masa menghuraikan rentetan, digunakan untuk menghuraikan rentetan ke dalam masa.
Perlu diingatkan bahawa masa di sini adalah semua objek struct_time.
Mengenai cara memformat masa, ia adalah pengetahuan yang sangat mudah Di sini saya meminjam kandungan dari dokumen laman web rasmi.
Sebagai tambahan kepada dua fungsi ini, modul masa juga menyediakan dua kaedah mudah untuk membantu menukar masa menjadi rentetan
asctime digunakan untuk menukar objek struct_time kepada rentetan 24 aksara standard, seperti ditunjukkan di bawah:
Ahad 20 Jun 23:21:05 1993
Kaedah ctime mempunyai fungsi yang sama seperti asctime, kecuali ia menerima saat Secara dalaman, ia akan menukarkan detik menjadi struct_time melalui localtime, dan kemudian ia akan sama dengan asctime.
Di atas ialah kandungan teras modul masa saya cuba menggunakan formula untuk membantu mengingati API ini
time点time得秒数 传入gm, local time得struct_time 要想变回原秒数 你得传回calendar.timegm和time. mktime string f和string p 格式化时间靠哥俩 你要还是嫌费事 asctime ,ctime来助力 专门帮你转字符串 前者接收struct_time 后者专门处理秒数 分工合作不费力 学好time模块基本功 做个时间的明白人!
Seterusnya, kita akan mula mempelajari modul datetime.
3.modul masa tarikh (1) Gambaran KeseluruhanModul masa menyelesaikan masalah mendapatkan dan mewakili masa, dan modul datetime seterusnya menyelesaikan masalah mendapatkan dan memanipulasi maklumat tahun, bulan, hari, jam, minit dan saat dengan cepat dalam masa.
Secara ringkasnya, terdapat tiga kelas teras dalam modul ini Kelas tarikh mewakili tahun, bulan dan hari, dan kelas masa mewakili jam, minit, saat dan milisaat Jangan keliru dengan modul masa di sini . Jingle boleh membantu mengingati situasi ini:
Tiada masa dalam masa
Tersembunyi dalam tarikh
Adakah penyuntingan itu teruk? Nah, saya juga fikir begitu.
Kelas datetime adalah gabungan tarikh dan masa.
Satu perkara perlu dijelaskan terlebih dahulu, kedua-dua kelas masa dan kelas datetime mempunyai atribut ialah objek tzinfo, yang mengandungi maklumat zon waktu bagi masa atau objek datetime sedar, dan ia boleh ditukar dengan tepat kepada saat sejak zaman itu.
Jika sifat ini ditetapkan kepada Tiada, maka objek masa atau objek datetime tidak akan mempunyai maklumat zon waktu Secara khusus, sama ada ia mewakili waktu tempatan atau waktu utc, kami perlu membuat keputusan sendiri dalam program.
Waktu tempatan yang kita bincangkan di sini merujuk kepada waktu dalam zon waktu kita, dan waktu utc merujuk kepada waktu piawai antarabangsa, iaitu Waktu Greenwich. Sama di bawah.
Sila ingat bahawa tiada maklumat zon waktu pada tarikh.
(2)从创建datetime开始创建datetime对象,我最常用的办法如下
dt=datetime.datetime.fromtimestamp(time.time())
以上,time.time()获得自epoch开始的秒数,fromtimestamp方法会将这个秒数转变成一个datetime对象。
这里有一个问题,这个datetime对象究竟是utc的还是local的?
答案是local的,这是该方法的默认行为。如果你在fromtimestamp方法中传入一个表示时区的参数,即tzinfo对象,就会按传入的时区信息进行转换。
获得表示当前local时间的datetime对象,还有两个简便方法
datetime. datetime. now() datetime. datetime. today()
以上我们得到的都是local的datetime对象,如何获得utc的datetime对象呢?有两个办法
datetime. datetime. utcfromtimestamp() datetime. datetime. utcnow()
我们还可以从字符串中创建datetime对象,
其内部还是先调用的time模块中的striptime方法,获取struct_time对象,再利用struct_time对象中的年月日时分秒信息构建datetime对象。
同样的,datetime类也提供了strftime(),asctime(),ctime()方法,相信不说你也知道是做什么的了。
datetime类还提供了一个combine方法,用来将一个date对象和一个time对象组合成一个datetime对象。
需要注意的是,datetime模块中出现timestamp时,一般可将其理解成time.time()返回的秒数
(3)date和time的创建date对象的创建和datetime非常相似,
datetime. date. today()
datetime.date.fromtimestamp()都可以创建一个date对象。
当然,你也可以通过构造方法传入年月日来创建date对象。
相比之下,time对象的创建就很有限,只能通过
datetime.time([hour[, minute[, second[, microsecond[, tzinfo]]]]])
这个方法创建。
(4)以上三个对象的操作和timedelta类在实际使用中,我们有一大块需求就是对日期进行比较和加减运算。得益于python的操作符重载能力,python中可以方便地对
date对象之间,或者datetime对象之间进行小于(
注意,这里仅限于同类对象之间,而且,不包括time对象之间。
两个date对象作减,或者两个datetime对象之间作减,差值用一个timedelta对象表示。
同理,一个date 对象或者datetime对象也可以加或者减一个timedelta对象。
一个timedelta对象含有三个属性:days,seconds, microseconds,days属性可以取负值,另外两个属性都只能是正值。
你可以用total_seconds()方法获得一个timedelta对象的秒数表示。
两个timedelta对象之间可加,可减,但不能做大小比较,因为这样没什么意义。
一个timedelta对象还可以与整数相乘,或通过//操作与一个整数相除。
还可以取反,或者用abs函数获得绝对值
4.无总结,不进步本文的目的不在于详细说明python处理时间日期的api如何使用,而是想通过一个概览的形式,让大家抓住time和datetime模块的设计结构,从而能够清楚这些模块提供了哪些能力,在需要的时候能够想起来去用,至于查详细的api,应该是可以轻松解决的。
Atas ialah kandungan terperinci Ringkasan lengkap pengendalian masa Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!