การแสดงวันที่ของ PHP ฉันจะรับวันที่และเวลาปัจจุบันใน PHP ได้อย่างไร แปลงวันที่และเวลาเป็นรูปแบบการประทับเวลา
ส่วนขยาย PHPสำหรับการทำงานกับวันที่และเวลา นี่คือชุดของคลาสที่ช่วยให้คุณสามารถแก้ไขปัญหาต่างๆ ได้มากมาย ฟังก์ชันเหล่านี้พร้อมใช้งานตั้งแต่เวอร์ชัน 5.2 เป็นต้นไป ซึ่งแต่ละคลาสจะแสดงสถานการณ์แบบเรียลไทม์:
วันที่และเวลาถูกแสดงโดยใช้วัตถุ DateTime
เขตเวลาแสดงโดยใช้ DateTimeZone
วัตถุ DateInterval แสดงถึงช่วงเวลา เช่น เมื่อเราต้องนับ 2 วันหรือชั่วโมงจากเวลาปัจจุบัน วัตถุนี้ไม่ได้ขึ้นอยู่กับเวลาที่เจาะจง แต่เป็นเพียงช่วงเวลาหนึ่งเท่านั้น
DatePeriod แสดงถึงช่วงเวลาระหว่างวันที่สองวัน
ตอนนี้เราจะมาดูการใช้งานจริงของสิ่งที่กล่าวมาข้างต้น
วันที่() และวันที่และเวลา
ถ้าเราจำเป็นต้องได้รับวันที่เราใช้ วันที่()มันง่ายและได้ผล เพียงผ่านรูปแบบวันที่ที่ต้องการ แต่ในทางปฏิบัติสิ่งนี้ไม่สะดวกนัก เช่น เมื่อจำเป็นต้องเปลี่ยนเวลาขึ้นอยู่กับเขตเวลา
DateTime ทำมากกว่าแค่ส่งคืนวันที่ ก่อนที่คุณจะสามารถใช้สิ่งนี้ได้ คุณต้องสร้างอินสแตนซ์ออบเจ็กต์ DateTime ใหม่ก่อน นี้จะกระทำเช่นเดียวกับในอื่น ๆ คลาส PHP:
$date = วันที่และเวลาใหม่();
ตัวสร้าง DateTime รับสตริงเป็นพารามิเตอร์ ในขณะนี้บรรทัดว่างเปล่า วันที่และเวลาปัจจุบันจะถูกตั้งค่าตามค่าเริ่มต้น
หากต้องการสร้างวันที่ที่เฉพาะเจาะจง คุณต้องส่งเงื่อนไขไปยังตัวสร้าง ด้านล่างนี้คุณจะเห็นบางส่วนซึ่งค่อนข้างชัดเจน:
New DateTime("2013, 24 มีนาคม") //DateTime จะแสดงวันที่ 24 มีนาคม 2013 DateTime ใหม่("2013-03-24") //DateTime จะแสดง 24 มีนาคม 2013 DateTime ใหม่("+2 วัน") // วันที่ 2 เริ่มจาก DateTime ใหม่ของวันนี้ ("พรุ่งนี้") // วันวันพรุ่งนี้
รายการรูปแบบทั้งหมดที่มีอยู่สามารถพบได้ในเอกสารอย่างเป็นทางการ
หากคุณไม่พบรูปแบบเวลาที่เหมาะสม คุณสามารถกำหนดได้ด้วยตนเอง DateTime::createFromFormat.
ตอนนี้เรามีวัตถุ DateTime สำเร็จรูปอยู่ในมือแล้ว เราก็สามารถทำสิ่งที่น่าสนใจได้มากมาย
การประทับเวลายูนิกซ์
$วันที่->getTimestamp();การเปลี่ยนวันที่และเวลา
$date->setDate(2013, 12, 30); //yyyy, mm, dd จะกำหนดวันที่เฉพาะ $date->setTime(12, 3, 20); //hh, mm, ss (เป็นทางเลือก) จะตั้งเวลา $date->modify("tomorrow"); // พรุ่งนี้ก็ตั้งค่าแบบนี้ได้เลย! $วันที่->setTimestamp(1364798550); // ตั้งค่าวันที่และเวลาโดยใช้ Unix Stampเป็นที่น่าสังเกตว่าหากเราส่งพารามิเตอร์ที่สูงกว่าที่ยอมรับได้ PHP จะเปลี่ยนพารามิเตอร์เหล่านั้นโดยอัตโนมัติ ตัวอย่างเช่น $date->setDate(2013, 12, 35); จะกลับมา 2014-01-04 เช่นเดียวกับเวลา
การทำงานกับหลายวัน
เมื่อคุณคุ้นเคยกับ DateTime แล้ว แอปพลิเคชันของคุณจะง่ายขึ้นและชาญฉลาดยิ่งขึ้น เราหวังว่าคุณจะรักการออกเดทมากขึ้นกว่าเดิม
ตอนนี้เราจะมาดูการทำงานกับการคำนวณทางคณิตศาสตร์บ้าง สมมติว่าเราต้องเปรียบเทียบวันเกิดสองวัน:
$sheldon = new DateTime("20 พฤษภาคม 1980"); $neo = new DateTime("11 มีนาคม 1962"); ถ้า ($sheldon > $neo) echo "เชลดอนอายุน้อยกว่านีโอ";
ซึ่งสามารถทำได้โดยใช้สคริปต์อื่น แบบนี้:
$diff = $neo->diff($เชลดอน);
การเรียกใช้ฟังก์ชัน ความแตกต่างผลตอบแทน ช่วงเวลาวันที่วัตถุ. นี่คือสิ่งที่ดูเหมือน:
วัตถุ DateInterval ([y] => 18 [m] => 2 [d] => 9 [h] => 0 [i] => 0 [s] => 0 => 0 => 6645)
สิ่งเหล่านี้เป็นทรัพย์สินสาธารณะ คุณสามารถสร้างสิ่งที่น่าสนใจตามวัตถุนี้ได้
//Neo มีอายุมากกว่า 18 ปี 2 เดือน $diff->format("Neo มีอายุมากกว่า %Y ปี และ %m เดือน");
สิ่งที่มีประโยชน์ที่สุดคือคุณสามารถใช้วัตถุ DateInterval กับวัตถุ DateInterval อื่นที่คล้ายกันได้
$neo->เพิ่ม($diff); //วันเกิดของนีโอเปลี่ยนเป็นเชลดอน
โปรดทราบ:การแก้ไข DateTime เช่นในกรณีข้างต้น จะไม่ส่งคืนอ็อบเจ็กต์ใหม่ แต่เพียงแก้ไขอ็อบเจ็กต์เก่าเท่านั้น โปรดคำนึงถึงสิ่งนี้เมื่อทำงานกับแอปพลิเคชันของคุณ เปิดตัว PHP 5.5 แล้ว ชั้นเรียนใหม่ซึ่งส่งคืนอ็อบเจ็กต์ใหม่หลังจากการแก้ไข
ความแตกต่างไม่ใช่วิธีเดียวที่จะได้รับวัตถุช่วงเวลา เนื่องจากนี่คือคลาส จึงสามารถสร้างออบเจ็กต์ใหม่ได้ตามปกติ:
$new_diff = ช่วงวันที่ใหม่("P2Y");
จำนวนปี เดือน วัน ฯลฯ จะถูกส่งต่อไปยังตัวสร้าง ข้อมูลเพิ่มเติมสามารถพบได้ในเอกสารประกอบเกี่ยวกับตัวสร้าง
การทำงานกับเขตเวลา
เมื่อสร้างวัตถุ DateTime ใหม่ อาร์กิวเมนต์ที่สองจะระบุเขตเวลา หากเราละเว้นอาร์กิวเมนต์นี้ เขตเวลาจะถูกนำมาจาก php.ini date.timezone คุณสามารถเปลี่ยนแปลงได้ทันทีโดยการโทร date_default_timezone_set:
Date_default_timezone_set("อเมริกา/นิวยอร์ก"); ใหม่ DateTime("วันนี้"); //วัตถุ datetime เปลี่ยนเป็นเขตเวลานิวยอร์ก
คุณยังสามารถเปลี่ยนเขตเวลาได้โดยใช้วัตถุ DateTimeZone:
$เขตเวลา = DateTimeZone ใหม่("อเมริกา/นิวยอร์ก"); $เชลดอน->setTimezone($เขตเวลา); //วันเกิดของเชลดอนตามเวลานิวยอร์ก
คุณสามารถกำหนดเขตเวลาระหว่างการสร้างวัตถุ DateTime ได้:
$sheldon = new DateTime("20 พฤษภาคม 1980", $timezone);
สิ่งสำคัญคือต้องจำไว้ว่า setTimezone จะแก้ไขออบเจ็กต์ DateTime ดั้งเดิม เราขอให้เปลี่ยนวันที่นี้ตามเขตเวลา ในทางกลับกัน ในตัวอย่างสุดท้าย เราได้ส่งเขตเวลาไปยังตัวสร้าง โดยพูดว่า "วันที่ที่ฉันกำลังสร้างอยู่ในเขตเวลานี้"
รายการเขตเวลาที่ใช้ได้มีอยู่ในเอกสารประกอบ
ช่วงวันที่และเวลา
ฉันคิดว่าเอกสารอย่างเป็นทางการให้คำอธิบายที่ชัดเจนที่สุด:
ช่วยให้คุณสามารถเคลื่อนที่ภายในช่วงเวลาที่กำหนดในช่วงเวลาที่เท่ากัน
วันที่ระยะเวลาสร้างการสะสมของเวลาในช่วงที่กำหนดผ่านทาง ช่วงเวลาที่กำหนด- เราต้องผ่านวันที่เริ่มต้น ช่วงเวลา และวันที่สิ้นสุด ออบเจ็กต์ DateTime ใหม่จะถูกสร้างขึ้นสำหรับแต่ละช่วงเวลา
สมมติว่าเราต้องการให้วันเกิดของเชลดอนทั้งหมด โดยเริ่มจากวันเกิดของเขา:
//เนื่องจากวันเกิดมีปีละครั้ง ช่วงเวลาจะเป็นหนึ่งปี $interval = new DateInterval("P1Y"); // อาร์กิวเมนต์ที่สามคือวันที่สิ้นสุด new DateTime() == now $ period = new DatePeriod($sheldon, $interval, new DateTime()); foreach($ช่วงเวลาเป็น $dt) ( //วัตถุ DateTime echo $dt->format("Y-m-d - D"), "\n"; )
ผลลัพธ์จะเป็นดังนี้:
1981-05-20 - พุธ 1982-05-20 - พฤหัสบดี 1983-05-20 - ศุกร์ 1984-05-20 - อาทิตย์ 1985-05-20 - จันทร์ 1986-05-20 - อังคาร ...
ขณะนี้ช่วงเวลาดังกล่าวรวมถึงวันที่เริ่มต้นด้วย คุณสามารถกำจัดมันได้โดยส่งอาร์กิวเมนต์ที่สี่ไปยังตัวสร้าง:
$ช่วงเวลา = DatePeriod ใหม่($sheldon, $interval, DateTime ใหม่ (), DatePeriod::EXCLUDE_START_DATE);
มาดูกันว่านีโอฉลองวันเกิดของเขากี่ครั้งก่อนที่เชลดอนจะเกิด:
$bdays = DatePeriod ใหม่($neo, $interval, $sheldon, DatePeriod::EXCLUDE_START_DATE); เสียงสะท้อน iterator_count($bdays);
ส่วนขยาย
คลาสทั้งหมดที่เราดูในวันนี้สามารถขยายได้ด้วยวิธีการของตัวเอง วิธีทั่วไปในการสร้างฟังก์ชัน __toStringซึ่งจะช่วยให้คุณสามารถแสดงวัตถุ DateTime โดยไม่ต้องเรียกรูปแบบ
อะไรอีก?
อย่างที่คุณเห็น ส่วนขยายวันที่และเวลานี้มีความเป็นไปได้มากมาย ใน เวอร์ชันล่าสุด PHP มีคลาสใหม่ เพียงแค่ดูเอกสารประกอบ
คุณมี ตัวอย่างที่ดีใช้วันที่และเวลาใน PHP? แบ่งปันในความคิดเห็นด้านล่าง! ขอบคุณทุกคนที่อ่าน
( PHP 4, PHP 5, PHP 7)
วันที่ - จัดรูปแบบเอาต์พุตวันที่/เวลาของระบบ
คำอธิบาย
สตริง วันที่ (สตริง $ รูปแบบ [, int $ประทับเวลา = เวลา() ])
ส่งกลับสตริงที่จัดรูปแบบตามรูปแบบรูปแบบที่ระบุ การประทับเวลาที่ระบุโดยอาร์กิวเมนต์การประทับเวลาจะถูกใช้ หรือเวลาของระบบปัจจุบัน หากไม่ได้ระบุการประทับเวลา.
ดังนั้นการประทับเวลาจึงเป็นทางเลือกและเป็นค่าเริ่มต้นเป็นค่าที่ส่งคืนโดยฟังก์ชัน
เวลา() รายการพารามิเตอร์รูปแบบสตริงผลลัพธ์ ( เชือก) พร้อมวันที่ ดูตัวเลือกการจัดรูปแบบด้านล่าง นอกจากนี้ยังมีค่าคงที่วันที่/เวลาที่กำหนดไว้ล่วงหน้าหลายค่าที่สามารถใช้แทนพารามิเตอร์เหล่านี้ได้ ตัวอย่างเช่น:.
แทนที่เทมเพลต | "ด ดี มาย เอช:ไอ:ส" | อักขระต่อไปนี้เป็นที่รู้จักในพารามิเตอร์รูปแบบ |
---|---|---|
อักขระในรูปแบบสตริง | --- | --- |
คำอธิบาย | ตัวอย่างค่าส่งคืน | วัน 01 ง 31 |
วันของเดือน 2 หลัก โดยมีศูนย์นำหน้า | จาก | วัน ถึงง ดี |
ข้อความแสดงวันในสัปดาห์ 3 ตัวอักษร | จันทร์ | วัน 1 ง 31 |
ดวงอาทิตย์เจ | วันของเดือนโดยไม่มีศูนย์นำหน้า | วัน ลง (ตัวพิมพ์เล็ก "L") |
ชื่อเต็มของวันในสัปดาห์ | วันอาทิตย์ วันเสาร์ 5.1.0) | วัน 1 เอ็น 7 หมายเลขซีเรียลของวันในสัปดาห์ตามมาตรฐาน ISO-8601 (เพิ่มใน |
เวอร์ชัน PHP | (วันจันทร์) ถึงวันที่ | (วันอาทิตย์), ส, คำต่อท้ายภาษาอังกฤษสำหรับเลขลำดับของวันของเดือน 2 ตัวอักษรเซนต์ ndถ ข้อความแสดงวันในสัปดาห์ 3 ตัวอักษร |
หรือ | ไทย | วัน 0 - ใช้ร่วมกับ 6 ว |
หมายเลขซีเรียลของวันในสัปดาห์ | (วันอาทิตย์) ถึงวันที่ | (วันเสาร์) 0 ง 365 |
z | --- | --- |
หมายเลขลำดับของวันในปี (เริ่มจาก 0) | จาก | สัปดาห์ 42 ว |
หมายเลขลำดับของสัปดาห์ของปีตามมาตรฐาน ISO-8601 สัปดาห์เริ่มต้นในวันจันทร์ (เพิ่มใน PHP 4.1.0) | --- | --- |
ตัวอย่างเช่น: | (สัปดาห์ที่ 42 ของปี) | วัน เดือนง เอฟ |
ชื่อเดือนเต็ม เช่น มกราคม หรือ มีนาคม | มกราคม | วัน 01 ง 12 |
ธันวาคม | ม | วัน หมายเลขซีเรียลของเดือนโดยมีศูนย์นำหน้าง ม |
ชื่อย่อของเดือน 3 ตัวอักษร | ม.ค | วัน 1 ง 12 |
ธ.ค | n | วัน 28 ง 31 |
เลขลำดับของเดือนที่ไม่มีศูนย์นำหน้า | --- | --- |
ที | จำนวนวันในเดือนที่ระบุ | 1 ปี 0 . |
ล | สัญญาณของปีอธิกสุรทิน ถ้าปีนั้นเป็นปีอธิกสุรทิน มิฉะนั้นโอ หมายเลขลำดับของวันในปี (เริ่มจาก 0)หมายเลขปีตามมาตรฐาน ISO-8601 | มีความหมายเดียวกับ 1999 ย 2003 |
ถ้าปีนั้นเป็นปีอธิกสุรทิน มิฉะนั้น | ยกเว้นเมื่อหมายเลขสัปดาห์ ISO ( | มีความหมายเดียวกับ 1999 , 2003 |
) เป็นของปีที่แล้วหรือปีหน้า; แล้วจะใช้ปีของสัปดาห์นั้น (เพิ่มใน PHP 5.1.0) | ตัวอย่าง: | มีความหมายเดียวกับ 99 , 03 |
หรือ | --- | --- |
ลำดับเลขประจำปี 4 หลัก | ย | หมายเลขปี 2 หลักย เวลา |
ก | Ante meridiem (อังกฤษ: "ก่อนเที่ยง") หรือ Post meridiem (อังกฤษ: "หลังเที่ยง") เป็นตัวพิมพ์เล็ก เช้า | นย ก |
ก่อนเที่ยงหรือโพสต์เมอริเดียมอิน | ตัวพิมพ์ใหญ่ เช้า.พี.เอ็ม. | วัน 000 ง 999 |
บี | เวลาในรูปแบบเวลาอินเทอร์เน็ต ( | วัน 1 ง 12 |
ระบบทางเลือก | เวลาของวันนับถอยหลัง) | วัน 0 ง 23 |
ก | นาฬิกาในรูปแบบ 12 ชั่วโมงแบบไม่มีศูนย์นำหน้า | วัน 01 ง 12 |
ช | นาฬิกาในรูปแบบ 24 ชั่วโมงแบบไม่มีศูนย์นำหน้า | วัน 00 ง 23 |
ชม. | นาฬิกาในรูปแบบ 12 ชั่วโมง โดยมีศูนย์นำหน้า | วัน 00 ง 59 |
ชม | วินาทีที่มีศูนย์นำหน้า | วัน 00 ง 59 |
คุณ | ไมโครวินาที (เพิ่มใน PHP 5.2.2) โปรดทราบว่า วันที่()จะกลับมาเสมอ 000000 , เพราะ มันยอมรับจำนวนเต็ม ( จำนวนเต็ม) พารามิเตอร์ ในขณะที่ วันที่และเวลา::รูปแบบ()รองรับไมโครวินาที | สัปดาห์ 654321 |
เขตเวลา | --- | --- |
จ | รหัสมาตราส่วนเขตเวลา (เพิ่มใน PHP 5.1.0) | มีความหมายเดียวกับ เวลาสากลเชิงพิกัด, GMT, แอตแลนติก/อะซอเรส |
ฉัน(ทุนฉัน) | ป้ายเวลาออมแสง | 1 หากวันที่ตรงกับเวลาฤดูร้อน 0 มิฉะนั้น. |
โอ | ความแตกต่างจากเวลากรีนิช มีหน่วยเป็นชั่วโมง | สัปดาห์ +0200 |
ป | ความแตกต่างของ GMT ด้วยเครื่องหมายทวิภาคระหว่างชั่วโมงและนาที (เพิ่มใน PHP 5.1.3) | สัปดาห์ +02:00 |
ต | ตัวย่อเขตเวลา | มีความหมายเดียวกับ EST, แพทยสภา ... |
ซี | โซนเวลาชดเชยเป็นวินาที สำหรับเขตเวลาที่ตั้งอยู่ทางตะวันตกของ UTC จะส่งกลับตัวเลขที่เป็นลบ และสำหรับเขตเวลาที่อยู่ทางตะวันออกของ UTC จะส่งกลับตัวเลขที่เป็นบวก | วัน -43200 ง 50400 |
วัน/เวลาเต็ม | --- | --- |
ค | วันที่ในรูปแบบ ISO 8601 (เพิ่มใน PHP 5) | 2004-02-12T15:19:21+00:00 |
ร | วันที่ใน » รูปแบบ RFC 2822 | สัปดาห์ พฤ. 21 ธ.ค. 2543 16:01:07 +0200 |
คุณ | จำนวนวินาทีที่ผ่านไปนับตั้งแต่เริ่มต้นยุค Unix (The Unix Epoch, 1 มกราคม 1970 00:00:00 GMT) | ดูเพิ่มเติม การประทับเวลาที่ระบุโดยอาร์กิวเมนต์การประทับเวลาจะถูกใช้ หรือเวลาของระบบปัจจุบัน หากไม่ได้ระบุการประทับเวลา |
อักขระอื่นๆ ที่พบในสตริงรูปแบบจะถูกพิมพ์โดยไม่มีการเปลี่ยนแปลงในสตริงผลลัพธ์ ซีกลับมาเสมอ 0 เมื่อใช้ จีเอ็มเดท().
การประทับเวลาความคิดเห็น:
เนื่องจากฟังก์ชันดังกล่าวใช้เวลาประทับเวลาเช่น จำนวนเต็ม, การจัดรูปแบบตัวอักษร คุณจะมีประโยชน์เมื่อใช้ฟังก์ชันเท่านั้น date_format()และการประทับเวลาที่กำหนดเองที่สร้างขึ้นโดยใช้ฟังก์ชัน วันที่_สร้าง().
พารามิเตอร์การประทับเวลาเผื่อเลือกคือ จำนวนเต็มการประทับเวลา โดยค่าเริ่มต้นเป็นเวลาท้องถิ่นปัจจุบัน หากไม่ได้ระบุการประทับเวลา กล่าวอีกนัยหนึ่ง ค่าเริ่มต้นจะเท่ากับผลลัพธ์ของฟังก์ชัน การประทับเวลาที่ระบุโดยอาร์กิวเมนต์การประทับเวลาจะถูกใช้ หรือเวลาของระบบปัจจุบัน หากไม่ได้ระบุการประทับเวลา.
ส่งกลับค่า
ส่งกลับสตริงวันที่ที่จัดรูปแบบ เมื่อส่งค่าที่ไม่ใช่ตัวเลขเป็นพารามิเตอร์ การประทับเวลาจะถูกส่งกลับ เท็จและเกิดข้อผิดพลาดระดับ E_คำเตือน.
รายการการเปลี่ยนแปลง
เวอร์ชัน | "ด ดี มาย เอช:ไอ:ส" |
---|---|
5.1.0 | ช่วงวันที่ที่ถูกต้องสำหรับการประทับเวลาโดยทั่วไปคือ 13 ธันวาคม 1901 20:45:54 GMT ถึง 19 มกราคม 2038 03:14:07 GMT (พวกเขาตอบสนองขั้นต่ำและค่าสูงสุด จำนวนเต็มแบบเซ็นชื่อแบบ 32 บิต) อย่างไรก็ตาม สำหรับ PHP เวอร์ชันต่ำกว่า 5.1.0 ในบางรุ่นระบบปฏิบัติการ |
5.1.0 | (เช่น Windows) ช่วงนี้จำกัดเฉพาะวันที่ 01-01-1970 ถึง 19-01-2038 ข้อผิดพลาดที่เกี่ยวข้องกับเขตเวลาทำให้เกิดข้อผิดพลาดระดับแล้ว E_STRICT และ. |
5.1.1 | E_ประกาศ สำหรับรูปแบบมาตรฐาน |
วันที่/เวลามีค่าคงที่พิเศษที่สามารถระบุเป็นพารามิเตอร์รูปแบบได้
ตัวอย่างที่ 1 ตัวอย่างการใช้งานฟังก์ชัน วันที่()
// ตั้งค่าเขตเวลาเริ่มต้น ใช้งานได้ตั้งแต่ PHP 5.1
date_default_timezone_set("UTC");
// จะแสดงผลดังนี้: วันจันทร์
วันที่สะท้อน ("l");
// จะแสดงผลดังนี้: วันจันทร์ที่ 8 สิงหาคม 2548 เวลา 15:12:46 น.
วันที่สะท้อน ("l jS \of F Y h:i:s A" );
// จะส่งออก: วันที่ 1 กรกฎาคม 2000 เป็นวันเสาร์
echo "วันที่ 1 กรกฎาคม 2000 ตรงกับวันที่ " . วันที่("l", mktime(0, 0, 0, 7, 1, 2000));
/* ตัวอย่างการใช้ค่าคงที่เป็นพารามิเตอร์การจัดรูปแบบ */
// จะแสดงผลดังนี้: วันพุธที่ 25 กันยายน 2556 เวลา 15:28:57 น. -0700
วันที่สะท้อน (DATE_RFC2822);
// จะแสดงผลดังนี้: 2000-07-01T00:00:00+00:00
วันที่สะท้อน (DATE_ATOM, mktime (0, 0, 0, 7, 1, 2000));
?>
เพื่อป้องกันไม่ให้อักขระถูกจดจำว่าเป็นอักขระที่มีการจัดรูปแบบ คุณต้องหลีกเลี่ยงอักขระนั้นโดยใช้แบ็กสแลช หากอักขระที่ใช้ Escape เป็นลำดับรูปแบบด้วย ก็ควรจะใช้ Escape อีกครั้ง
ตัวอย่างที่ 2 การหลีกอักขระในฟังก์ชัน วันที่()
// จะแสดงผลดังนี้: วันพุธที่ 15
วันที่สะท้อน ("l \t\h\e jS" );
?>
หากต้องการแสดงวันที่ในอดีตและอนาคต การใช้ฟังก์ชันต่างๆ จะสะดวก วันที่()และ เอ็มเคไทม์().
ตัวอย่าง #3 ตัวอย่างการแชร์คุณสมบัติ วันที่()และ เอ็มเคไทม์()
$พรุ่งนี้ = mktime (0 , 0 , 0 , วันที่ ("m" ) , วันที่ ("d" )+ 1 , วันที่ ("Y" ));
$เดือนสุดท้าย = mktime (0 , 0 , 0 , วันที่ ( "m" ) - 1 , วันที่ ( "d" ), วันที่ ( "Y" ));
$nextyear = mktime (0 , 0 , 0 , วันที่ ( "m" ), วันที่ ( "d" ), วันที่ ( "Y" )+ 1 );
?>
ความคิดเห็น:
วิธีนี้มีความน่าเชื่อถือมากกว่าการลบและเพิ่มวินาทีในการประทับเวลา เนื่องจากช่วยให้สามารถเปลี่ยนไปใช้เวลาฤดูร้อน/ฤดูหนาวได้อย่างยืดหยุ่น หากจำเป็น
ตัวอย่างเพิ่มเติมของการใช้ฟังก์ชัน วันที่()- สิ่งสำคัญคือต้องทราบว่าคุณควรหลีกเลี่ยงอักขระใดๆ ที่คุณต้องการปล่อยไว้โดยไม่มีการเปลี่ยนแปลง สิ่งนี้ก็เป็นจริงสำหรับตัวละครเหล่านั้นด้วย รุ่นปัจจุบัน PHP ไม่ได้รับการยอมรับว่าเป็นการจัดรูปแบบ เนื่องจากอาจมีให้ใช้ในเวอร์ชันต่อๆ ไป
หากต้องการหลีกลำดับหลีก (เช่น \n) คุณควรใช้เครื่องหมายคำพูดเดี่ยว วันที่()
ตัวอย่าง #4 การจัดรูปแบบโดยใช้
// สมมติว่าวันที่ปัจจุบันคือวันที่ 10 มีนาคม 2544 เวลา 17:16:18 น.
// และเราอยู่ในเขตเวลาเวลามาตรฐานของภูเขา (MST)
$วันนี้ = วันที่ ("F j, Y, g:i a" ); // 10 มีนาคม 2544 17:16 น
$today = date("m.d.y"); // 03.10.01
$วันนี้ = วันที่("j, n, Y" ); // 10, 3, 2544
$today = date("Ymd"); // 20010310 $today = date ("h-i-s, j-m-y นี่คือวัน" );
$วันนี้ = วันที่ ("\i\t \i\s \t\h\e jS \d\a\y." ); //เป็นวันที่ 10 แล้ว.
$วันนี้ = วันที่ ("DM j G:i:s T Y" ); // วันเสาร์ที่ 10 มี.ค. 17:16:18 MST 2544
$วันนี้ = วันที่ ("H:m:s \m \i\s\ \m\o\n\t\h" ); // 17:03:18 น. คือเดือน
$วันนี้ = วันที่("H:i:s"); // 17:16:18
$today = date ("Y-m-d H:i:s" ); // 10-03-2544 17:16:18 (รูปแบบ MySQL DATETIME)
?>
หากต้องการจัดรูปแบบวันที่เป็นภาษาอื่น ให้ใช้แทน วันที่()ฟังก์ชั่น กำหนดสถานที่() E_STRICT strftime().
หมายเหตุ
ความคิดเห็น:
หากต้องการรับการประทับเวลาจากการแสดงสตริงของวันที่ คุณสามารถใช้ฟังก์ชันได้ สเตรโตไทม์()- นอกจากนี้บางฐานข้อมูลยังมี ฟังก์ชั่นดั้งเดิมเพื่อแปลงการแสดงวันที่ภายในเป็นการประทับเวลา (เช่น ฟังก์ชัน MySQL » UNIX_TIMESTAMP)
เพื่อทำงานกับวันที่ในการใช้งาน PHP ฟังก์ชั่นต่างๆ- เราจะเริ่มเรียนรู้ด้วยฟังก์ชัน เวลา.
ฟังก์ชันเวลา รูปแบบการประทับเวลา
การทำงาน เวลาส่งกลับค่าความแตกต่างเป็นวินาทีระหว่าง 1 มกราคม 1970 E_STRICT ช่วงเวลาปัจจุบัน- การแสดงวันที่นี้เรียกว่ารูปแบบ การประทับเวลา.
ทำไมคุณถึงต้องมีการประทับเวลา?
เวลาในรูปแบบ การประทับเวลาใช้ค้นหาความแตกต่างระหว่างวันที่เป็นวินาที
เช่น ฉันมีกำหนดเวลาสำหรับ วันที่ 1 มกราคมของปีปัจจุบันและการประทับเวลา สำหรับช่วงเวลาปัจจุบัน- ฉันจะลบอันหนึ่งออกจากอีกอันหนึ่งแล้วหาความแตกต่างระหว่างช่วงเวลาเหล่านี้ ในไม่กี่วินาที- ผมจะหารส่วนต่างนี้ด้วย 60 แล้วได้ส่วนต่างเป็นนาที (เนื่องจากในหนึ่งนาทีมี 60 วินาที) ผมจะหารมันอีก 60 แล้วได้ส่วนต่างเป็นชั่วโมง. และอื่นๆ
การใช้ฟังก์ชัน เวลาเราจะได้แต่ช่วงเวลาปัจจุบันเท่านั้น เพื่อรับการประทับเวลาวันที่ใดก็ได้ ควรใช้ฟังก์ชัน:
เอ็มเคไทม์
การทำงาน ควรใช้ฟังก์ชันฟังก์ชันเอ็มเคไทม์ เวลาทำงานคล้ายกับฟังก์ชัน แต่ต่างจากมันตรงที่รับพารามิเตอร์: mktime(ชั่วโมง นาที วินาที เดือน วัน ปี) (โปรดทราบว่าเดือนและวันกลับกัน
- ดูตัวอย่างงาน:สามารถละเว้นพารามิเตอร์ได้จากส่วนท้าย
- หากเราไม่เขียนปี (พารามิเตอร์สุดท้าย) ปีปัจจุบันจะถูกนำไปใช้โดยอัตโนมัติ หากเราไม่เขียนวันด้วย (พารามิเตอร์สุดท้าย) วันปัจจุบันและปีปัจจุบันจะถูกนำไปใช้ และอื่นๆ: มาแก้เรื่องทั่วไปกันงาน เวลา E_STRICT ควรใช้ฟังก์ชันบน - ให้เราต้องหา.ความแตกต่างในไม่กี่วินาที
ระหว่างเวลาปัจจุบันถึงเที่ยงวัน (12 ชั่วโมง 0 นาที 0 วินาที) ของวันที่ 1 กุมภาพันธ์ (กุมภาพันธ์เป็นเดือนที่ 2) 2000:ผลลัพธ์ที่ได้คือความแตกต่างในหน่วยวินาที 612717139 จะมีลักษณะเช่นนี้:
(รีเฟรชหน้าแล้วตัวเลขนี้จะเปลี่ยน) การประทับเวลามีความรู้ว่ารูปแบบคืออะไร
(เราจะต้องการมันในภายหลัง) เรามาศึกษาฟังก์ชันที่มีประโยชน์เพิ่มเติมสำหรับการทำงานกับวันที่ เช่น ฟังก์ชันวันที่กัน
การทำงาน วันที่แสดงวันที่และเวลาปัจจุบันในรูปแบบที่กำหนด
รูปแบบถูกระบุโดยคำสั่งควบคุม (ตัวอักษรภาษาอังกฤษ) และคุณสามารถแทรกตัวคั่นระหว่างคำสั่งเหล่านั้นได้ (เครื่องหมายยัติภังค์ ทวิภาค และอื่นๆ)
ทีม (ตัวพิมพ์ใหญ่แตกต่างจากปกติให้ความสนใจ!):
- คุณ– จำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 (นั่นคือ การประทับเวลา)
- หมายเลขซีเรียลของวันในสัปดาห์– หมายเลขวันตั้งแต่ต้นปี
- ถ้าปีนั้นเป็นปีอธิกสุรทิน มิฉะนั้น– ปี 4 หลัก.
- ) เป็นของปีที่แล้วหรือปีหน้า; แล้วจะใช้ปีของสัปดาห์นั้น (เพิ่มใน PHP 5.1.0)- ปี เลขสองหลัก
- ชื่อเดือนเต็ม เช่น มกราคม หรือ มีนาคม– เลขที่เดือน (มีศูนย์นำหน้า)
- ชื่อย่อของเดือน 3 ตัวอักษร– ตัวเลขเดือนแบบไม่มีศูนย์นำหน้า
- คำอธิบาย– จำนวนวันในเดือนนั้นจะเป็นตัวเลขสองหลักเสมอ (นั่นคือ ตัวแรกสามารถเป็นศูนย์ได้)
- ข้อความแสดงวันในสัปดาห์ 3 ตัวอักษร– จำนวนวันในเดือนที่ไม่มีศูนย์นำหน้า
- หรือ– วันในสัปดาห์ (0 - วันอาทิตย์, 1 - วันจันทร์ ฯลฯ)
- ก- นาฬิกาในรูปแบบ 12 ชั่วโมง
- ช– นาฬิกาในรูปแบบ 24 ชั่วโมง
- ชม.- นาที.
- ชม– วินาที
- ที– 1 ถ้าเป็นปีอธิกสุรทิน, 0 ถ้าไม่ใช่ปีอธิกสุรทิน
- หมายเลขลำดับของวันในปี (เริ่มจาก 0)– หมายเลขประจำสัปดาห์ของปี
- ธ.ค– จำนวนวันในเดือนที่กำหนด
ตัวอย่างการทำงานกับวันที่:
พารามิเตอร์ที่สองของฟังก์ชันวันที่
การทำงาน วันที่มีวินาที พารามิเตอร์ทางเลือกซึ่งใช้เวลาในรูปแบบการประทับเวลา หากคุณผ่านพารามิเตอร์นี้ ฟังก์ชันวันที่จะจัดรูปแบบไม่ใช่ช่วงเวลาปัจจุบัน แต่จะเป็นรูปแบบที่ส่งผ่านเป็นพารามิเตอร์ตัวที่สอง นี้ การประทับเวลาสามารถรับได้เช่นผ่านทาง ควรใช้ฟังก์ชัน(แต่ไม่จำเป็น):
สามารถใช้ค้นหาจำนวนวันในสัปดาห์สำหรับวันที่ที่ระบุ - เราเพียงส่งผ่านมันเป็นพารามิเตอร์ตัวที่สองโดยใช้ฟังก์ชัน ควรใช้ฟังก์ชันและตั้งค่าอักขระควบคุมเป็นพารามิเตอร์แรก "ว":
ฟังก์ชันสโตรไทม์
ต่อไป คุณสมบัติที่มีประโยชน์ซึ่งเราจะวิเคราะห์เรียกว่า strtotime
การทำงาน สเตรโตไทม์- นี่คืออะนาล็อกของฟังก์ชัน mktime (ส่งคืนการประทับเวลาด้วย) ต่างกันตรงที่ต้องใช้วันที่ใน มากกว่ารูปแบบฟรี
ตัวอย่างเช่น ฉันสามารถส่งผ่านสตริงได้ "2025-12-31" และฟังก์ชันจะค้นหาว่าปีอยู่ที่ไหน เดือนอยู่ที่ไหน และวันที่อยู่ที่ไหน แล้วส่งคืนวันที่นี้ในรูปแบบการประทับเวลา
คุณสามารถทำอะไรได้อีก: คุณสามารถเขียนแบบนี้ - strtotime("ตอนนี้")- และเราจะได้ช่วงเวลาปัจจุบันทันเวลา หรือประมาณนั้น - strtotime("วันจันทร์หน้า")- และเราจะไปถึงวันจันทร์หน้า (วันจันทร์ในภาษาอังกฤษคือ “วันจันทร์”)
สามารถดูได้ทุกรูปแบบ
ตัวอย่างงาน:
รหัสต่อไปนี้จะส่งคืนวันที่ของวันจันทร์ก่อนหน้า:
วิธีบวกหรือลบวันที่
หากต้องการลบหรือเพิ่มช่วงเวลาหนึ่งให้กับวันที่คุณควรใช้ฟังก์ชันสามอย่างรวมกัน: date_create - เตรียมวันที่สำหรับงาน (วันที่จะต้องอยู่ในรูปแบบปีเดือนวัน) สร้างสิ่งที่เรียกว่า วัตถุวันที่ซึ่งดำเนินการจัดการเพิ่มเติม date_modify - เพิ่มหรือลบ date_format - แสดงวันที่ผลลัพธ์ในรูปแบบที่กำหนด เพื่อทำความเข้าใจวิธีการทำงานกับฟังก์ชันเหล่านี้ โปรดศึกษาตัวอย่างด้านล่าง
ตัวอย่างที่ 1
มาสร้างออบเจ็กต์ที่มีวันที่ในปี 2025 12 เดือน 31 วัน จากนั้นบวก 1 วันเข้าไปแล้วส่งออกในรูปแบบ "day.month.year"
ผลลัพธ์ของการรันโค้ด:
ตัวอย่างที่ 2
มาสร้างออบเจ็กต์ที่มีวันที่ปี 2025 12 เดือน 31 วัน จากนั้นบวก 3 วันเข้าไปแล้วส่งออกในรูปแบบ "day.month.year"
ผลลัพธ์ของการรันโค้ด:
ตัวอย่างที่ 3
มาสร้างออบเจ็กต์ที่มีวันที่ในปี 2025 12 เดือน 31 วัน จากนั้นบวกด้วย 3 วัน 1 เดือน แล้วส่งออกในรูปแบบ "day.month.year"
ผลลัพธ์ของการรันโค้ด:
ตัวอย่างที่ 4
มาสร้างวัตถุที่มีวันที่เป็นปี 2025 1 เดือน 1 วัน จากนั้นลบ 1 วันจากนั้นส่งออกในรูปแบบ "day.month.year"
ผลลัพธ์ของการรันโค้ด:
คุณควรทำอย่างไรต่อไป:
เริ่มแก้ไขปัญหาโดยใช้ลิงก์ต่อไปนี้: ปัญหาสำหรับบทเรียน
เมื่อคุณตัดสินใจทุกอย่างแล้ว ให้ไปยังการศึกษาหัวข้อใหม่
รู้เบื้องต้นเกี่ยวกับ OOP
- บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
การแนะนำ - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
คุณสมบัติ - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
วิธีการ - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
คุณสมบัติและ $this - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
วิธีการและ $this - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
สาธารณะส่วนตัว - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
ตัวสร้าง - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
ผู้ตั้งค่า Getters - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
คุณสมบัติแบบอ่านอย่างเดียว - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
หนึ่งคลาส - หนึ่งไฟล์ - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
วัตถุในอาร์เรย์ - บทเรียนหมายเลข
แท็บใหม่ด้วย new.code.mu
มูลค่าทรัพย์สินเริ่มต้นในตัวสร้าง
เชือก วันที่(สตริง รูปแบบ[, int การประทับเวลา])
ส่งกลับเวลาที่จัดรูปแบบตามอาร์กิวเมนต์ รูปแบบโดยใช้การประทับเวลาที่ระบุโดยอาร์กิวเมนต์ การประทับเวลาหรือเวลาของระบบปัจจุบันหาก การประทับเวลาไม่ได้ระบุ กล่าวอีกนัยหนึ่ง การประทับเวลาเป็นทางเลือกและเป็นค่าเริ่มต้นเป็นค่าที่ส่งคืนโดยฟังก์ชัน การประทับเวลาที่ระบุโดยอาร์กิวเมนต์การประทับเวลาจะถูกใช้ หรือเวลาของระบบปัจจุบัน หากไม่ได้ระบุการประทับเวลา .
ความคิดเห็น:สำหรับระบบส่วนใหญ่ วันที่ที่ถูกต้องคือตั้งแต่วันที่ 13 ธันวาคม 1901, 20:45:54 GMT ถึง 19 มกราคม 2038, 03:14:07 GMT (วันที่เหล่านี้สอดคล้องกับค่าต่ำสุดและสูงสุดของจำนวนเต็มที่ลงนามแบบ 32 บิต) สำหรับ Windows วันที่ที่ถูกต้องคือตั้งแต่ 01/01/1970 ถึง 01/19/2038
ความคิดเห็น:หากต้องการรับการประทับเวลาจากการแสดงสตริงของวันที่ คุณสามารถใช้ฟังก์ชันได้ สเตรโตไทม์()- นอกจากนี้ ฐานข้อมูลบางแห่งยังมีฟังก์ชันของตนเองในการแปลงการแสดงวันที่ภายในเป็นการประทับเวลา (เช่น ฟังก์ชัน MySQL UNIX_TIMESTAMP)
อักขระต่อไปนี้เป็นที่รู้จักในพารามิเตอร์รูปแบบ
แทนที่เทมเพลต | "ด ดี มาย เอช:ไอ:ส" | อักขระต่อไปนี้เป็นที่รู้จักในพารามิเตอร์รูปแบบ |
---|---|---|
ก | Ante meridiem หรือ Post meridiem เป็นตัวพิมพ์เล็ก | เช้าหรือบ่าย |
ก | Ante meridiem หรือ Post meridiem เป็นตัวพิมพ์ใหญ่ | เช้าหรือบ่าย |
บี | เวลาในมาตรฐานอินเทอร์เน็ตของ Swatch | 000 ถึง 999 |
ค | วันที่ในรูปแบบ ISO 8601 (เพิ่มใน PHP 5) | 2004-02-12T15:19:21+00:00 |
ง | วันของเดือน 2 หลักโดยมีศูนย์นำหน้า | ตั้งแต่ 01 ถึง 31 |
ดี | ชื่อย่อของวันในสัปดาห์ 3 ตัวอักษร | ตั้งแต่วันจันทร์ถึงวันอาทิตย์ |
เอฟ | (สัปดาห์ที่ 42 ของปี) | ตั้งแต่เดือนมกราคมถึงธันวาคม |
ก | นาฬิกาในรูปแบบ 12 ชั่วโมงโดยไม่มีศูนย์นำหน้า | ตั้งแต่ 1 ถึง 12 |
ช | นาฬิกาในรูปแบบ 24 ชั่วโมงโดยไม่มีศูนย์นำหน้า | ตั้งแต่ 0 ถึง 23 |
ชม. | นาฬิกาในรูปแบบ 12 ชั่วโมงโดยมีศูนย์นำหน้า | ตั้งแต่วันที่ 01 ถึง 12 |
ชม | นาฬิกาในรูปแบบ 24 ชั่วโมงโดยมีศูนย์นำหน้า | ตั้งแต่ 00 ถึง 23 |
ฉัน | นาทีที่มีศูนย์นำหน้า | 00 ถึง 59 |
ฉัน (เมืองหลวงฉัน) | ป้ายเวลาออมแสง | 1 ถ้าวันที่ตรงกับเวลาออมแสง มิฉะนั้น 0 เป็นอย่างอื่น |
เจ | วันของเดือนที่ไม่มีศูนย์นำหน้า | ตั้งแต่วันที่ 1 ถึง 31 |
ล. (ตัวพิมพ์เล็ก "L") | วันของเดือนโดยไม่มีศูนย์นำหน้า | ตั้งแต่วันอาทิตย์ถึงวันเสาร์ |
ล | จำนวนวันในเดือนที่ระบุ | 1 ถ้าปีนั้นเป็นปีอธิกสุรทิน มิฉะนั้น 0 |
ม | หมายเลขซีเรียลของเดือนที่มีศูนย์นำหน้า | ตั้งแต่วันที่ 01 ถึง 12 |
ม | ม | ตั้งแต่ ม.ค. ถึง ธ.ค |
n | เลขลำดับของเดือนที่ไม่มีศูนย์นำหน้า | ตั้งแต่ 1 ถึง 12 |
โอ | ความแตกต่างจากเวลามาตรฐานกรีนิชเป็นชั่วโมง | ตัวอย่างเช่น: +0200 |
ร | วันที่ในรูปแบบ RFC 2822 | ตัวอย่างเช่น: พฤหัสบดีที่ 21 ธันวาคม 2000 16:01:07 +0200 |
ส | วินาทีที่มีศูนย์นำหน้า | ตั้งแต่ 00 ถึง 59 |
ส | (วันจันทร์) ถึงวันที่ | st, nd, rd หรือ th ใช้ร่วมกับเจ |
ที | จำนวนวันในหนึ่งเดือน | ตั้งแต่วันที่ 28 ถึง 31 |
ต | โซนเวลาบนเซิร์ฟเวอร์ | ตัวอย่าง: EST, MDT... |
คุณ | จำนวนวินาทีที่ผ่านไปนับตั้งแต่เริ่มต้นยุค Unix (The ยุคยูนิกซ์ 1 มกราคม 2513 00:00:00 GMT) | ดูเพิ่มเติม การประทับเวลาที่ระบุโดยอาร์กิวเมนต์การประทับเวลาจะถูกใช้ หรือเวลาของระบบปัจจุบัน หากไม่ได้ระบุการประทับเวลา |
ว | ไทย | ตั้งแต่ 0 (วันอาทิตย์) ถึง 6 (วันเสาร์) |
ว | หมายเลขลำดับของสัปดาห์ของปีตามมาตรฐาน ISO-8601 วันแรกของสัปดาห์คือวันจันทร์ (เพิ่มใน PHP 4.1.0) | ตัวอย่างเช่น: 42 (สัปดาห์ที่ 42 ของปี) |
ย | ยกเว้นเมื่อหมายเลขสัปดาห์ ISO ( | ตัวอย่าง: 1999, 2003 |
ย | ตัวอย่าง: | ตัวอย่าง: 99 , 03 |
z | หมายเลขลำดับของวันในปี (นับจาก 0) | ตั้งแต่ 0 ถึง 365 |
ซี | โซนเวลาชดเชยเป็นวินาที สำหรับเขตเวลาทางตะวันตกของ UTC จะเป็นจำนวนลบ สำหรับเขตเวลาทางตะวันออกของ UTC จะเป็นค่าบวก | -43200 ถึง 43200 |
อักขระอื่นๆ ที่พบในสตริง รูปแบบจะถูกส่งออกไปยังบรรทัดผลลัพธ์โดยไม่มีการเปลี่ยนแปลง Z จะส่งกลับ 0 เสมอเมื่อใช้ จีเอ็มเดท() .
ตัวอย่างการใช้ฟังก์ชัน date()
คุณสามารถหลีกเลี่ยงการจดจำอักขระเป็นอักขระการจัดรูปแบบได้โดยการหลีกอักขระด้วย \ หากอักขระนั้นมีลักษณะพิเศษเมื่อใช้ร่วมกับ \ (เช่น \t) คุณควรเพิ่มอีก \
การหลีกอักขระในฟังก์ชัน date()