ในบทนี้ เราจะแนะนำให้คุณรู้จักกับการประมวลผลเวลาและวันที่ในภาษา Perl
มีฟังก์ชันหลายอย่างในการจัดการเวลาในภาษา Perl:
1. ฟังก์ชัน time() ส่งกลับจำนวนวินาทีสะสมตั้งแต่วันที่ 1 มกราคม 1970
2. ฟังก์ชั่น localtime() : รับเวลาโซนเวลาท้องถิ่น
3. ฟังก์ชัน gmtime() : รับเวลามาตรฐานกรีนิช
ต่อไปเรามาดูฟังก์ชัน localtime() ซึ่งจะส่งคืนเวลาและวันที่ปัจจุบันโดยไม่มีข้อโต้แย้ง
สัญลักษณ์ 9 ตัวต่อไปนี้แสดงถึงพารามิเตอร์เวลาและวันที่ที่แตกต่างกัน:
วินาที, # วินาที, 0 ถึง 61 นาที, # นาที, 0 ถึง 59 ชั่วโมง, # ชั่วโมง, 0 ถึง 24 วันทำการ, # วัน, 1 ถึง 31 จันทร์, # เดือน, 0 ถึง 11 ปี, # ปี, เริ่มต้นจาก 19.00 น. วัน, # วันในสัปดาห์ , 0 -6,0 หมายถึง วันอาทิตย์ yday, # วันของปี, 0-364,365isdst # เป็นจริงหากใช้การปรับเวลาออมแสง
ตัวอย่างการสาธิตมีดังนี้:
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
วันอาทิตย์ที่ 12 มิถุนายน
หากเรียก localtime() โดยตรง จะส่งคืนเวลาของการตั้งค่าโซนเวลาปัจจุบันของระบบ ตัวอย่างจะเป็นดังนี้:
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
เวลาและวันที่: อาทิตย์ มิ.ย. 12 11:27:31 2016
ฟังก์ชัน gmtime() คล้ายกับ localtime() แต่จะส่งคืนเวลามาตรฐานกรีนิช
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
เวลาท้องถิ่นและวันที่: Sun Jun 12 11:32:14 2016GMT เวลาและวันที่: Sun Jun 12 03:32:14 2016
จากตัวอย่างจะเห็นได้ว่าเวลาในประเทศจีนแตกต่างจากเวลามาตรฐานกรีนิช 8 ชั่วโมง
เราสามารถใช้องค์ประกอบเวลา 9 รายการของฟังก์ชัน localtime() เพื่อส่งออกเวลารูปแบบที่จำเป็นต้องกำหนด เอาต์พุตที่จัดรูปแบบแล้วใช้ฟังก์ชัน printf():
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
เวลาในการจัดรูปแบบ: HH:MM:SS11:35:23
เราสามารถรับเวลายุคได้โดยใช้ฟังก์ชัน time() ซึ่งจะส่งคืนจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 ตัวอย่างมีดังนี้:
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
จำนวนวินาทีสะสมตั้งแต่ 1 มกราคม 1970 คือ: 1465702883
เราสามารถส่งออกรูปแบบเวลาที่เราต้องการได้:
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
เวลาและวันที่ปัจจุบัน: 15-3-2560 12:47:54 เวลาและวันที่ของเมื่อวาน: 14-3-2560 12:47:54
ฟังก์ชัน strftime() สามารถจัดรูปแบบเวลาให้อยู่ในรูปแบบที่เราต้องการได้
ตารางต่อไปนี้แสดงสัญลักษณ์การจัดรูปแบบบางส่วน สัญลักษณ์ * ระบุว่าคุณต้องการอ้างอิงเวลาท้องถิ่น:
เครื่องหมาย | อธิบาย | ตัวอย่าง |
---|---|---|
%a | อักษรย่อของวันในสัปดาห์ (Sun..Sat) * | Thu |
%A | ชื่อเต็มของวันในสัปดาห์ (วันอาทิตย์..วันเสาร์) * | Thursday |
%b | ตัวย่อเดือน (ม.ค..ธ.ค.) * | Aug |
%B | ชื่อเต็มของเดือน (มกราคม..ธันวาคม) * | August |
%c | วันที่และเวลา* | Thu Aug 23 14:55:02 2001 |
%C | ปีหารด้วย 100 และปัดเศษ ( 00-99 ) | 20 |
%d | วันของเดือน ( 01-31 ) | 23 |
%D | วันที่ MM/DD/YY เท่ากับ %m/%d/%y | 08/23/01 |
%e | วันของเดือนโดยเว้นวรรคให้เป็นตัวเลขหลักเดียว ( 1-31 ) | 23 |
%F | ตัวย่อของ YYYY-MM-DD คล้ายกับ %Y-%m-%d | 2001-08-23 |
%g | ตัวเลขสองหลักสุดท้ายของปี ( 00-99 ) | 01 |
%g | ปี | 2001 |
%h | ตัวย่อเดือน* (เหมือนกับตัวเลือก %b ) | Aug |
%H | รูปแบบ 24 ชั่วโมง ( 00-23 ) | 14 |
%I | รูปแบบ 12 ชั่วโมง ( 01-12 ) | 02 |
%j | วันในรอบปี ( 001-366 ) | 235 |
%m | เดือน( 01-12 ) | 08 |
%M | นาที ( 00-59 ) | 55 |
%n | บรรทัดใหม่ ( 'n' ) |
|
%p | แสดง AM หรือ PM | PM |
%r | เวลา (ชช:นาที:ss AM หรือ PM), 12 ชั่วโมง* | 02:55:02 pm |
%R | รูปแบบเวลา 24 ชั่วโมง HH:MM เทียบเท่ากับ %H:%M | 14:55 |
%S | จำนวนวินาที ( 00-61 ) | 02 |
%t | แท็บแนวนอน ( 't' ) |
|
%T | เวลา (รูปแบบ 24 ชั่วโมง) (hh:mm:ss) เทียบเท่ากับ %H:%M:%S | 14:55 |
%u | รูปแบบวันในสัปดาห์ ISO 8601 วันจันทร์ คือ 1 ( 1-7 ) | 4 |
%U | หมายเลขสัปดาห์ของปี วันอาทิตย์เป็นวันแรก ( 00-53 ) | 33 |
%V | ISO 8601 สัปดาห์ ( 00-53 ) | 34 |
%w | วันในสัปดาห์ (0 หมายถึงวันอาทิตย์) ( 0-6 ) | 4 |
%W | หมายเลขสัปดาห์ของปี วันจันทร์เป็นวันแรก ( 00-53 ) | 34 |
%x | แสดงรูปแบบวันที่ (ดด/วว/ปปป) * | 08/23/01 |
%X | รูปแบบเวลาแสดงผล* | 14:55:02 |
%y | ปี ตัวเลขสองหลัก ( 00-99 ) | 01 |
%Y | ปี | 2001 |
%z | ออฟเซ็ตเขตเวลาระหว่าง ISO 8601 และ UTC (1 นาที=1, 1 ชั่วโมง=100) | +100 |
%Z | ชื่อของเขตเวลาปัจจุบัน เช่น "เวลามาตรฐานของจีน" * | CDT |
%% | % เครื่องหมาย | % |
ผลลัพธ์การดำเนินการของตัวอย่างข้างต้นคือ:
เวลาและวันที่ - 2016-06-12 12:15:13 เวลาและวันที่ - 2016-06-12 04:15:13