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โมดูล