แม้ว่า JS จะให้วิธีการที่แตกต่างกันต่าง ๆ สำหรับการได้รับวัตถุวันที่เวลาเช่น: วิธี getDate | วิธี getday | วิธี GetGreetherear | วิธี Gethours ... ฯลฯ มันไม่ได้ให้วิธีการเช่น Java สำหรับผู้ใช้ในการจัดรูปแบบวัตถุเวลาที่ระบุตามเทมเพลต (รูปแบบ) ที่จัดทำด้วยตัวเองดังนั้นฉันจึงห่อหุ้มวิธีเล็ก ๆ สำหรับทุกคนเพื่อให้สนุกกับ -.- หากคุณมีคำแนะนำที่ดีฉันอยากจะแนะนำอย่างไม่เห็นแก่ตัว
ใช้คะแนนความรู้:
อาร์กิวเมนต์: วัตถุนี้แสดงถึงฟังก์ชั่นที่ดำเนินการและพารามิเตอร์ของฟังก์ชันที่เรียกมัน ไม่สามารถสร้างได้อย่างชัดเจน แม้ว่ามันจะมีแอตทริบิวต์ความยาวและสามารถใช้ค่าในไวยากรณ์ "[]" เช่นอาร์เรย์ แต่ก็ไม่ใช่อาร์เรย์ Typeof Object: Operator, ส่งคืนสตริงที่แสดงถึงประเภทข้อมูลของนิพจน์ หกความเป็นไปได้: "หมายเลข" "สตริง" "บูลีน" "วัตถุ" "ฟังก์ชั่น" และ "ไม่ได้กำหนด" Object.constructor: แสดงถึงฟังก์ชั่นที่สร้างวัตถุ วัตถุต้อง เป็นชื่อของวัตถุหรือฟังก์ชั่น ข้อมูลพื้นฐานไม่มีคุณลักษณะนี้ วิธีการ EXEC: เรียกใช้การค้นหาในสตริงโดยใช้รูปแบบนิพจน์ทั่วไปและส่งคืนอาร์เรย์ที่มีผลการค้นหา ไม่พบการจับคู่จากนั้นจะส่งคืนค่า NULL องค์ประกอบประเภทเดียวกันในอาร์เรย์จะไม่ปรากฏซ้ำ ๆ str.split (rex | str): แบ่งสตริงเป็นสตริงย่อยเป็นวัตถุปกติหรือสตริงย่อยจากนั้นส่งคืนผลลัพธ์เป็นอาร์เรย์สตริง โยนข้อผิดพลาด ('msg'): โยนข้อผิดพลาดด้วยข้อมูลข้อความ การโยนสามารถตามด้วยการแสดงออกใด ๆ นอกจากนี้ยังมีการใช้งานบางอย่างสำหรับ .. ในตัวดำเนินการสามมิติและ substr ซึ่งค่อนข้างง่าย
รหัสตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
-
**** JS เวลาและการจัดรูปแบบวันที่ *** <br>
* <p>
* สตริงเทมเพลตใช้รูปแบบที่เข้มงวด หากเกินรูปแบบจะมีการโยนข้อยกเว้นและแต่ละรูปแบบสามารถปรากฏขึ้นได้เพียงครั้งเดียว ตัวอย่างเช่นรูปแบบ yyyy-mm-yyyy จะโยนข้อยกเว้น
* </p>
* ความยาวปี y: 2/4 บิต <br>
* ความยาว Q-Quarterly: 1 หลัก <br>
* ความยาว M-month: 1 ~ 2 หลัก <br>
* ความยาว d-dai: 1 ~ 2 หลัก <br>
* ความยาว H-TIME: 1 ~ 2 ตำแหน่งระบบ 24 ชั่วโมง, H: ระบบ 12 ชั่วโมง <br>
* ความยาว M: 1 ~ 2 หลัก <br>
* ความยาว S-Second: 1 ~ 2 บิต <br>
* ความยาว S-MS: แก้ไข 1 บิต
* @param {วันที่ประเภทวัตถุ} วันที่
* @param {สตริงเทมเพลตประเภทสตริง} fmt
* @return เวลาจัดรูปแบบและสตริงวันที่
* @author lyt
-
ฟังก์ชัน DateFormat (วันที่, fmt) {
if (arguments.length! = 2) // ตรวจสอบจำนวนพารามิเตอร์
การโยนข้อผิดพลาด ('ความยาวอาร์กิวเมนต์ผิดกฎหมาย');
if (! วันที่ || (typeof date! = 'object') || (d.constructor! = วันที่)) // การตรวจสอบความถูกต้องตามกฎหมายของพารามิเตอร์
การโยนข้อผิดพลาด (อาร์กิวเมนต์ [0] + ': ประเภทไม่ใช่วันที่วันที่');
if (/h+/.test(fmt) &&/h+/.test(fmt))
การโยนข้อผิดพลาด ("รูปแบบของชั่วโมงผิดประเภทเดียวกันสามารถปรากฏเพียงครั้งเดียวในแถว!");
/* การตรวจสอบพารามิเตอร์เทมเพลตวิธีการตรวจสอบปกติ*//
var verify = function (rex) {
var arr = ใหม่ regexp (rex) .exec (fmt); // รับอาร์เรย์ผลการจับคู่
if (! arr) // return หากการแข่งขันล้มเหลว
กลับ "";
if (fmt.split (rex) .length> 2) // ช่วงเวลาของประเภทเดียวกันเกิดขึ้นหลายครั้ง
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบ FMT: ประเภทเดียวกันสามารถปรากฏขึ้นหนึ่งครั้งในแถว!");
return arr [0];
-
-
* จัดเตรียมการเปลี่ยนการจับคู่สากลสำหรับเดือนวันชั่วโมงนาทีและวินาที
* @param {คีย์แอตทริบิวต์ Object O} r
* @param {r สอดคล้องกับวัตถุปกติ} rex
-
var Common = function (r, rex) {
ถ้า (len! = 1 && len! = 2)
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบเดือน: M สามารถปรากฏขึ้นได้ 1/2 ครั้งเท่านั้น");
Len == 2? fmt = fmt.replace (rex, o [r] .length == 1? "0"+o [r]: o [r]): fmt = fmt.replace (rex, o [r]);
-
var o = {// วัตถุที่เก็บข้อมูลข้อมูล
"y +": date.getlyear () + "", // ปี
"q +": math.floor ((date.getMonth () + 3) / 3), // รายไตรมาส
"M +": date.getMonth () + 1 + "", // เดือน
"D +": date.getDate () + "", // วัน
"H +": date.getHours () + "", // 24:00
"H +": date.getHours () + "", // 12 นาฬิกา
"M +": date.getMinutes () + "", // คะแนน
"S +": date.getSeconds () + "", // วินาที
"S+": date.getMilliseconds () // มิลลิวินาที
-
สำหรับ (var r ใน o) {
var rex, len, temp;
rex = ใหม่ regexp (r);
temp = ตรวจสอบ (rex); // จับคู่สตริงผลลัพธ์
len = temp.length; // ความยาว
if (! len || len == 0)
ดำเนินการต่อ;
if (r == "y+") {
ถ้า (len! = 2 && len! = 4)
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบปี: Y สามารถปรากฏ 2/4 ครั้งเท่านั้น");
Len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} อื่นถ้า (r == "q+") {
ถ้า (เลน! = 1)
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบรายไตรมาส: Q สามารถปรากฏขึ้นได้เพียงครั้งเดียวเท่านั้น");
fmt = fmt.replace (rex, o [r]);
} อื่นถ้า (r == "h+") {
ถ้า (len! = 1 && len! = 2)
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบชั่วโมง: H สามารถเกิดขึ้นได้ 1/2 ครั้งเท่านั้น");
var h = (o [r]> 12? o [r] -12: o [r]) + "";
Len == 2? fmt = fmt.replace (rex, h.length == 1? "0"+h: h): fmt = fmt.replace (rex, h);
} อื่นถ้า (r == "s+") {
ถ้า (เลน! = 1)
การโยนข้อผิดพลาด ("ข้อผิดพลาดรูปแบบมิลลิวินาที: S สามารถปรากฏขึ้นได้เพียงครั้งเดียวเท่านั้น");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "h+" || r == "m+" || r == "s+")
สามัญ (r, rex)
-
-
กลับ fmt;
-
เอฟเฟกต์การสาธิตข้างต้นมีไว้สำหรับการอ้างอิงของคุณ:
การคัดลอกรหัสมีดังนี้: console.log (dateformat (วันที่ใหม่ (), 'yyyyy's qq m เดือน dd วัน hh ชั่วโมง m นาที s วินาทีที่สองมิลลิวินาที'));
การคัดลอกรหัสมีดังนี้: console.log (dateformat (วันที่ใหม่ (), 'yyyyyyyyyyyyyyqqmmmddddddhhhhmmm นาทีวินาทีวินาทีวินาที'));
การคัดลอกรหัสมีดังนี้: console.log (วันที่ (วันที่ใหม่ (), 'yyyyy', Q ไตรมาส, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, Q,
การคัดลอกรหัสมีดังนี้: console.log (dateformat ("ฉันไม่ใช่วัตถุเวลา", 'yyyyy ปี Q ไตรมาส m เดือน dd วัน hh ชั่วโมง m นาที s วินาทีที่สองมิลลิวินาที'));
การคัดลอกรหัสมีดังนี้: console.log (dateformat (วันที่ใหม่ (), 'yyyyy's QQ MMM เดือน DDD วัน HH ชั่วโมง M นาที S Second S Millisecond'));
ฉันจะไม่แสดงรายการเอฟเฟกต์อื่นทีละรายการ หากคุณสนใจคุณสามารถคัดลอกรหัสและทดสอบได้โดยตรง โปรดแจ้งเตือนอย่างมากหากมีข้อบกพร่องหรือพื้นที่ใด ๆ ที่ต้องปรับให้เหมาะสม
ข้างต้นเป็นการแนะนำฟังก์ชั่นการห่อหุ้มที่มีประโยชน์มากนี้ มันไม่เป็นประโยชน์มากเหรอ? เพื่อนสามารถใช้มันโดยตรงในโครงการของพวกเขา