Python 3 - วันที่และเวลา
โปรแกรม Python สามารถจัดการวันที่และเวลาได้หลายวิธี การแปลงระหว่างรูปแบบวันที่เป็นเรื่องปกติสำหรับคอมพิวเตอร์ โมดูลเวลาและปฏิทินของ Python ช่วยติดตามวันที่และเวลา
ติ๊กคืออะไร?
ช่วงเวลาคือตัวเลขทศนิยมหน่วยเป็นวินาที เวลาโดยเฉพาะจะแสดงเป็นวินาทีตั้งแต่เวลา 00.00 น. วันที่ 1 มกราคม 1970 (ยุค)
มีความนิยม timeโมดูลที่มีอยู่ใน Python ซึ่งมีฟังก์ชันสำหรับการทำงานกับเวลาและสำหรับการแปลงระหว่างการแสดง ฟังก์ชั่นtime.time() ส่งคืนเวลาของระบบปัจจุบันเป็นขีดตั้งแต่ 00:00 น. 1 มกราคม 1970 (ยุค)
ตัวอย่าง
#!/usr/bin/python3
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: 1455508609.34375
เลขคณิตวันที่ทำได้ง่ายด้วยเห็บ อย่างไรก็ตามไม่สามารถแสดงวันที่ก่อนยุคในแบบฟอร์มนี้ได้ วันที่ในอนาคตอันไกลไม่สามารถแสดงด้วยวิธีนี้ได้เช่นกันจุดตัดคือบางครั้งในปี 2038 สำหรับ UNIX และ Windows
TimeTuple คืออะไร?
ฟังก์ชันเวลาของ Python จำนวนมากจัดการกับเวลาเป็นเลขสองจำนวน 9 ตัวดังที่แสดงด้านล่าง -
ดัชนี | ฟิลด์ | ค่า |
---|---|---|
0 | ปี 4 หลัก | พ.ศ. 2559 |
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 |
ตัวอย่างเช่น -
import time
print (time.localtime());
สิ่งนี้จะให้ผลลัพธ์ดังนี้ -
time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9,
tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
ทูเพิลข้างต้นเทียบเท่ากับ struct_timeโครงสร้าง. โครงสร้างนี้มีคุณสมบัติดังต่อไปนี้ -
ดัชนี | คุณลักษณะ | ค่า |
---|---|---|
0 | tm_year | พ.ศ. 2559 |
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/python3
import time
localtime = time.localtime(time.time())
print ("Local current time :", localtime)
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ซึ่งสามารถจัดรูปแบบในรูปแบบอื่น ๆ ที่นำเสนอได้ -
Local current time : time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15,
tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
กำลังจัดรูปแบบเวลา
คุณสามารถจัดรูปแบบเวลาใดก็ได้ตามความต้องการของคุณ แต่วิธีง่ายๆในการหาเวลาในรูปแบบที่อ่านได้คือ asctime() -
#!/usr/bin/python3
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Local current time : Mon Feb 15 09:34:03 2016
รับปฏิทินสำหรับเดือน
โมดูลปฏิทินมีวิธีการเล่นปฏิทินรายปีและรายเดือนที่หลากหลาย ที่นี่เราพิมพ์ปฏิทินสำหรับเดือนที่กำหนด (ม.ค. 2008) -
#!/usr/bin/python3
import calendar
cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Here is the calendar:
February 2016
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
โมดูลเวลา
มีความนิยม 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() ฟังก์ชัน
นี่คือรายการฟังก์ชั่นที่มีให้กับไฟล์ calendar โมดูล -
ซีเนียร์ | ฟังก์ชั่นและคำอธิบาย |
---|---|
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 -
- โมดูลวันที่และเวลา
- โมดูล pytz
- โมดูล dateutil