Python - วันที่และเวลา

โปรแกรม Python สามารถจัดการวันที่และเวลาได้หลายวิธี การแปลงระหว่างรูปแบบวันที่เป็นเรื่องปกติสำหรับคอมพิวเตอร์ โมดูลเวลาและปฏิทินของ Python ช่วยติดตามวันที่และเวลา

ติ๊กคืออะไร?

ช่วงเวลาเป็นตัวเลขทศนิยมหน่วยเป็นวินาที เวลาโดยเฉพาะจะแสดงเป็นวินาทีนับตั้งแต่ 00:00:00 น. 1 มกราคม 1970 (ยุค)

มีความนิยม timeโมดูลที่มีอยู่ใน Python ซึ่งมีฟังก์ชันสำหรับการทำงานกับเวลาและสำหรับการแปลงระหว่างการแสดง ฟังก์ชันtime.time ()ส่งคืนเวลาของระบบปัจจุบันเป็นขีดตั้งแต่ 00:00:00 น. 1 มกราคม 1970 (ยุค)

ตัวอย่าง

#!/usr/bin/python
import time;  # This is required to include time module.

ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

สิ่งนี้จะก่อให้เกิดผลลัพธ์ดังนี้ -

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

เลขคณิตวันที่ทำได้ง่ายด้วยเห็บ อย่างไรก็ตามไม่สามารถแสดงวันที่ก่อนยุคในแบบฟอร์มนี้ได้ วันที่ในอนาคตอันไกลไม่สามารถแสดงด้วยวิธีนี้ได้เช่นกันจุดตัดคือบางครั้งในปี 2038 สำหรับ UNIX และ Windows

TimeTuple คืออะไร?

ฟังก์ชันเวลาของ Python จำนวนมากจัดการกับเวลาเป็นเลขสองจำนวน 9 ตัวดังที่แสดงด้านล่าง -

ดัชนี ฟิลด์ ค่า
0 ปี 4 หลัก พ.ศ. 2551
1 เดือน 1 ถึง 12
2 วัน 1 ถึง 31
3 ชั่วโมง 0 ถึง 23
4 นาที 0 ถึง 59
5 ประการที่สอง 0 ถึง 61 (60 หรือ 61 เป็นวินาทีอธิกสุรทิน)
6 วันของสัปดาห์ 0 ถึง 6 (0 คือวันจันทร์)
7 วันของปี 1 ถึง 366 (วันจูเลียน)
8 การประหยัดเวลากลางวัน -1, 0, 1, -1 หมายถึงไลบรารีกำหนด DST

ทูเพิลข้างต้นเทียบเท่ากับ struct_timeโครงสร้าง. โครงสร้างนี้มีคุณสมบัติดังต่อไปนี้ -

ดัชนี คุณลักษณะ ค่า
0 tm_year พ.ศ. 2551
1 tm_mon 1 ถึง 12
2 tm_mday 1 ถึง 31
3 tm_hour 0 ถึง 23
4 tm_min 0 ถึง 59
5 tm_sec 0 ถึง 61 (60 หรือ 61 เป็นวินาทีอธิกสุรทิน)
6 tm_wday 0 ถึง 6 (0 คือวันจันทร์)
7 tm_yday 1 ถึง 366 (วันจูเลียน)
8 tm_isdst -1, 0, 1, -1 หมายถึงไลบรารีกำหนด DST

กำลังรับเวลาปัจจุบัน

ในการแปลเวลาทันทีจากวินาทีนับตั้งแต่ค่าจุดลอยตัวยุคไปเป็นไทม์ทูเพิลให้ส่งค่าทศนิยมไปยังฟังก์ชัน (เช่นเวลาท้องถิ่น) ที่ส่งคืนไทม์ทูเพิลโดยมีทั้งเก้ารายการที่ถูกต้อง

#!/usr/bin/python
import time;

localtime = time.localtime(time.time())
print "Local current time :", localtime

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ซึ่งสามารถจัดรูปแบบในรูปแบบอื่น ๆ ที่นำเสนอได้ -

Local current time : time.struct_time(tm_year=2013, tm_mon=7, 
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

กำลังจัดรูปแบบเวลา

คุณสามารถจัดรูปแบบเวลาใดก็ได้ตามความต้องการของคุณ แต่วิธีง่ายๆในการรับเวลาในรูปแบบที่อ่านได้คือ asctime () -

#!/usr/bin/python
import time;

localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

Local current time : Tue Jan 13 10:17:09 2009

รับปฏิทินสำหรับเดือน

โมดูลปฏิทินมีวิธีการเล่นปฏิทินรายปีและรายเดือนที่หลากหลาย ที่นี่เราพิมพ์ปฏิทินสำหรับเดือนที่กำหนด (ม.ค. 2008) -

#!/usr/bin/python
import calendar

cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

Here is the calendar:
   January 2008
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

เวลาโมดูล

มีความนิยม timeโมดูลที่มีอยู่ใน Python ซึ่งมีฟังก์ชันสำหรับการทำงานกับเวลาและสำหรับการแปลงระหว่างการแสดง นี่คือรายการวิธีการทั้งหมดที่มี -

ซีเนียร์ ฟังก์ชั่นพร้อมคำอธิบาย
1 time.altzone

ค่าชดเชยของเขตเวลา DST ในพื้นที่ซึ่งอยู่ทางตะวันตกของ UTC เป็นวินาทีหากมีการกำหนดไว้ ซึ่งจะเป็นลบหากเขตเวลา DST ในพื้นที่อยู่ทางตะวันออกของ UTC (เช่นเดียวกับในยุโรปตะวันตกรวมถึงสหราชอาณาจักร) ใช้สิ่งนี้เฉพาะในกรณีที่แสงกลางวันไม่ใช่ศูนย์

2 time.asctime ([tupletime])

ยอมรับไทม์ทูเพิลและส่งคืนสตริง 24 อักขระที่อ่านได้เช่น 'อังคาร 11 ธันวาคม 18:07:14 2008'

3 time.clock ()

ส่งคืนเวลา CPU ปัจจุบันเป็นจำนวนวินาทีทศนิยม ในการวัดต้นทุนการคำนวณของวิธีการต่างๆค่าของ time.clock มีประโยชน์มากกว่าค่า time.time ()

4 time.ctime ([วินาที])

เช่น asctime (localtime (secs)) และไม่มีข้อโต้แย้งก็เหมือนกับ asctime ()

5 time.gmtime ([วินาที])

ยอมรับการแสดงผลทันทีในไม่กี่วินาทีนับตั้งแต่ยุคและส่งคืนค่าไทม์ทูเพิลด้วยเวลา UTC หมายเหตุ: t.tm_isdst เป็น 0 เสมอ

6 time.localtime ([วินาที])

ยอมรับการแสดงผลทันทีเป็นวินาทีนับตั้งแต่ยุคและส่งคืนไทม์ทูเพิล t ด้วยเวลาท้องถิ่น (t.tm_isdst คือ 0 หรือ 1 ขึ้นอยู่กับว่า DST ใช้กับวินาทีทันทีตามกฎท้องถิ่นหรือไม่)

7 time.mktime (ทูเพิลไทม์)

ยอมรับทันทีที่แสดงเป็นไทม์ทูเพิลในเวลาท้องถิ่นและส่งคืนค่าทศนิยมพร้อมกับค่าทันทีที่แสดงเป็นวินาทีนับตั้งแต่ยุค

8 เวลานอนหลับ (วินาที)

ระงับเธรดการโทรเป็นวินาทีวินาที

9 time.strftime (fmt [, tupletime])

ยอมรับทันทีที่แสดงเป็นไทม์ทูเพิลในเวลาท้องถิ่นและส่งคืนสตริงที่แสดงถึงการโต้ตอบทันทีตามที่ระบุโดยสตริง fmt

10 time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')

แยกวิเคราะห์ str ตามรูปแบบสตริง fmt และส่งคืนค่าทันทีในรูปแบบ time-tuple

11 time.time ()

ส่งคืนเวลาปัจจุบันทันทีจำนวนทศนิยมของวินาทีนับตั้งแต่ยุค

12 time.tzset ()

รีเซ็ตกฎการแปลงเวลาที่ใช้โดยรูทีนไลบรารี ตัวแปรสภาพแวดล้อม TZ ระบุวิธีการดำเนินการนี้

ให้เราดูฟังก์ชั่นสั้น ๆ -

มีคุณลักษณะสำคัญสองประการที่สามารถใช้ได้กับโมดูลเวลา -

ซีเนียร์ แอตทริบิวต์พร้อมคำอธิบาย
1

time.timezone

แอตทริบิวต์ time.timezone คือการชดเชยเป็นวินาทีของเขตเวลาท้องถิ่น (ไม่มี DST) จาก UTC (> 0 ในอเมริกา; <= 0 ในส่วนใหญ่ของยุโรปเอเชียแอฟริกา)

2

time.tzname

แอตทริบิวต์ time.tzname คือคู่ของสตริงที่ขึ้นกับโลแคลซึ่งเป็นชื่อของเขตเวลาท้องถิ่นที่ไม่มีและ DST ตามลำดับ

ปฏิทินโมดูล

โมดูลปฏิทินมีฟังก์ชันที่เกี่ยวข้องกับปฏิทินรวมถึงฟังก์ชันในการพิมพ์ปฏิทินข้อความสำหรับเดือนหรือปีที่กำหนด

ตามค่าเริ่มต้นปฏิทินจะใช้วันจันทร์เป็นวันแรกของสัปดาห์และวันอาทิตย์เป็นวันสุดท้าย หากต้องการเปลี่ยนแปลงให้เรียกใช้ฟังก์ชัน calendar.setfirstweekday ()

นี่คือรายการฟังก์ชันที่มีให้ในโมดูลปฏิทิน -

ซีเนียร์ ฟังก์ชั่นพร้อมคำอธิบาย
1

calendar.calendar(year,w=2,l=1,c=6)

ส่งคืนสตริงหลายบรรทัดพร้อมปฏิทินสำหรับปีที่จัดรูปแบบเป็นสามคอลัมน์โดยคั่นด้วยช่องว่าง c w คือความกว้างในอักขระของแต่ละวัน แต่ละบรรทัดมีความยาว 21 * w + 18 + 2 * c l คือจำนวนบรรทัดในแต่ละสัปดาห์

2

calendar.firstweekday( )

ส่งคืนการตั้งค่าปัจจุบันสำหรับวันธรรมดาที่เริ่มต้นในแต่ละสัปดาห์ โดยค่าเริ่มต้นเมื่อนำเข้าปฏิทินเป็นครั้งแรกนี่คือ 0 ซึ่งหมายถึงวันจันทร์

3

calendar.isleap(year)

ส่งคืนค่า True หากปีเป็นปีอธิกสุรทิน มิฉะนั้นเท็จ

4

calendar.leapdays(y1,y2)

ส่งคืนจำนวนวันอธิกสุรทินทั้งหมดในปีที่อยู่ในช่วง (y1, y2)

5

calendar.month(year,month,w=2,l=1)

ส่งคืนสตริงหลายบรรทัดพร้อมปฏิทินสำหรับเดือนเดือนของปีหนึ่งบรรทัดต่อสัปดาห์บวกสองบรรทัดส่วนหัว w คือความกว้างในอักขระของแต่ละวัน แต่ละบรรทัดมีความยาว 7 * w + 6 l คือจำนวนบรรทัดในแต่ละสัปดาห์

6

calendar.monthcalendar(year,month)

ส่งกลับรายการของรายการ ints แต่ละรายการย่อยหมายถึงสัปดาห์ วันนอกเดือนเดือนของปีตั้งค่าเป็น 0; วันภายในเดือนจะถูกตั้งค่าเป็นวันของเดือน 1 ขึ้นไป

7

calendar.monthrange(year,month)

ส่งคืนจำนวนเต็มสองจำนวน อันแรกคือรหัสของวันทำงานสำหรับวันแรกของเดือนเดือนในปีปี อันที่สองคือจำนวนวันในเดือนนั้น รหัสวันธรรมดาคือ 0 (วันจันทร์) ถึง 6 (วันอาทิตย์); ตัวเลขเดือนคือ 1 ถึง 12

8

calendar.prcal(year,w=2,l=1,c=6)

เช่นเดียวกับพิมพ์ calendar.calendar (ปี, w, l, c)

9

calendar.prmonth(year,month,w=2,l=1)

เช่นเดียวกับพิมพ์ calendar.month (ปี, เดือน, w, l)

10

calendar.setfirstweekday(weekday)

ตั้งค่าวันแรกของแต่ละสัปดาห์เป็นรหัสวันธรรมดาในวันธรรมดา รหัสวันธรรมดาคือ 0 (วันจันทร์) ถึง 6 (วันอาทิตย์)

11

calendar.timegm(tupletime)

การผกผันของ time.gmtime: ยอมรับเวลาทันทีในรูปแบบไทม์ทูเพิลและส่งกลับค่าทันทีเช่นเดียวกับจำนวนทศนิยมของวินาทีนับตั้งแต่ยุค

12

calendar.weekday(year,month,day)

ส่งคืนรหัสวันธรรมดาสำหรับวันที่ที่ระบุ รหัสวันธรรมดาคือ 0 (วันจันทร์) ถึง 6 (วันอาทิตย์); ตัวเลขเดือนคือ 1 (มกราคม) ถึง 12 (ธันวาคม)

โมดูลและฟังก์ชั่นอื่น ๆ

หากคุณสนใจคุณจะพบรายการโมดูลและฟังก์ชั่นที่สำคัญอื่น ๆ ที่จะเล่นกับวันที่และเวลาใน Python -

  • datetimeโมดูล

  • pytzโมดูล

  • dateutilโมดูล