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