Ext.Date เป็นซิงเกิลตันที่ห่อหุ้มฟังก์ชั่นการทำงานของวันที่และขยายฟังก์ชั่นของวันที่ JavaScript รายการต่อไปนี้บางฟังก์ชั่นที่ใช้กันทั่วไป
ฟังก์ชั่นพื้นฐาน:
มาดูตัวอย่างรายละเอียดด้านล่างกันเถอะ:
// ext.date.add (วันที่, ช่วงเวลา, ค่า) เพิ่มหรือลดเวลาจนถึงปัจจุบัน ฟังก์ชั่นนี้ไม่ได้เปลี่ยนค่าของวัตถุวันที่ดั้งเดิม แต่ส่งคืนวัตถุวันที่ใหม่ // @param {วันที่} วันที่วัตถุวันที่ดั้งเดิม // @param {String} หน่วยค่าช่วงเวลาคุณสามารถเลือก ext.date.day, ext.date.hour, ext.date.minute, ext.date.month, // ext.date.second, ext.date.year, ext.date.milli // @param {number} ค่าค่าที่ต้องเพิ่มวัตถุวันที่ // @return {วันที่} ส่งคืนวัตถุวันที่หลังจากค่าเพิ่ม // ตัวอย่าง var date = ext.date.add (วันที่ใหม่ ('10/29/2006 '), ext.date.day, 5); // เพิ่ม 5 วันคอนโซลล็อก (วันที่); // ผลตอบแทนผลลัพธ์วันศุกร์ที่ 3 พ.ย. 2549 00:00:00 GMT+0800 (เวลามาตรฐานจีน) วันที่ var = ext.date.add (วันที่ใหม่ ('10/29/2006 '), ext.date.day, -5); // ลด 5 วันหากค่าเป็นลบมันจะลดลง console.log (วันที่); // ส่งคืนผลลัพธ์อังคาร 24 ต.ค. 2549 00:00:00 GMT+0800 (เวลามาตรฐานจีน) วันที่ var = ext.date.add (วันที่ใหม่ ('10/29/2006 '), ext.date.year, 2); // เพิ่ม 2 ปี console.log (วันที่); // ส่งคืนผลลัพธ์พุธ 29 ตุลาคม 2008 00:00:00 GMT+0800 (เวลามาตรฐานจีน) // ext.date.between (วันที่เริ่มต้นสิ้นสุด) กำหนดว่าวันที่อยู่ระหว่างเริ่มต้นและสิ้นสุด // @param {วันที่} วันที่ที่จะตัดสิน // @param {วันที่} เริ่ม // @param {วันที่} end // @return {boolean} ถ้าวันที่ส่งคืนจริงระหว่างเริ่มต้นและสิ้นสุดมิฉะนั้นส่งคืนเท็จ // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/29/2006 '); var start = วันที่ใหม่ ('10/5/2006 '); var end = วันที่ใหม่ ('11/15/2006 '); ext.date.between (วันที่, เริ่ม, สิ้นสุด); // ส่งคืนจริง // ext.date.cleartime (วันที่, โคลน) ตั้งเวลาวันที่ 00 ชั่วโมง, 00 นาที, 00 วินาที, 000 มิลลิวินาที // @param {วันที่} วันที่ // @param {bollean} พารามิเตอร์ตัวเลือกโคลน หากเป็นจริงสำเนาของวันที่จะถูกส่งคืนและหากเป็นเท็จวันที่จะถูกส่งคืนซึ่งค่าเริ่มต้นเป็นเท็จ // @return {วันที่} ส่งคืนวันที่ตั้งค่า // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/30/2012 14:30:00 '); ext.date.cleartime (วันที่); // ส่งคืนอังคาร 30 ต.ค. 2555 00:00:00 GMT+0800 (เวลามาตรฐานจีน) // ext.date.clone (วันที่) สำเนาของวันที่โคลน // @param {วันที่} วันที่ // @return {วันที่} ส่งคืนวันที่โคลน // ตัวอย่าง var orig = วันที่ใหม่ ('10/30/2012 '); var copy = ext.date.clone (orig); // โคลนค่า // ext.date.format (วันที่, รูปแบบ) จัดรูปแบบวันที่และส่งคืนสตริงที่จัดรูปแบบ // @param {วันที่} วันที่วันที่ // @Param {String} รูปแบบวันที่รูปแบบ, Y-Year, M-Month, D-Day, H-24 ชั่วโมง, I-Minute, S-seconds // @return {String} ส่งคืนสตริงที่จัดรูปแบบ // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.format (วันที่, 'ymd h: i: s'); // 2012-10-20 14:30:00 EXT.DATE.Format (วันที่, 'Y Year M เดือน D วันที่ H: I: S'); // 20 ตุลาคม 2555 14:30:00 // ext.date.getDayOfyear (วันที่) รับวันที่ของปี // @param {วันที่} วันที่วันที่ // @return {number} ส่งคืนจำนวนวันโดยมีช่วงค่า 0 ~ 364 และถ้าเป็นปีกระโดดมี 365 // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getDayOfyear (วันที่); // return 293 // ext.date.getDaysInmonth (วันที่) รับวันที่เป็นวันของเดือน // @param {วันที่} วันที่วันที่ // @return {number} ส่งคืนจำนวนวัน // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getDayOfyear (วันที่); // return 31 // ext.date.getFirstDateOfMonth (วันที่) รับวันแรกของเดือนที่วันที่อยู่ // @param {วันที่} วันที่วันที่ // @return {วันที่} ส่งคืนวันแรกของเดือน // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getFirstDateOfMonth (วันที่); // ส่งคืนวันจันทร์ที่ 01 ตุลาคม 2555 00:00:00 GMT+0800 (เวลามาตรฐานจีน) // ext.date.getFirstdayOfmonth (วันที่) รับสัปดาห์ของวันแรกของเดือนที่วันที่อยู่ // @param {วันที่} วันที่ // @return {number} ส่งคืนสัปดาห์ของวันแรกของเดือนโดยมีช่วงค่า 0 ~ 6 // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getFirstdayOfmonth (วันที่); // return 1, ระบุวันจันทร์ // ext.date.getLastDateOfMonth (วันที่) รับวันสุดท้ายของเดือนที่วันที่อยู่ // @param {วันที่} วันที่วันที่ // @return {วันที่} ส่งคืนวันสุดท้ายของเดือนที่คุณอยู่ // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getLastDateOfMonth (วันที่); // กลับพุธ 31 ตุลาคม 2555 00:00:00 GMT+0800 (เวลามาตรฐานจีน) // ext.date.getLastdayofmonth (วันที่) รับสัปดาห์ของวันสุดท้ายของเดือนที่วันที่อยู่ // @param {วันที่} วันที่ // @return {number} ส่งคืนสัปดาห์ของวันสุดท้ายของเดือนโดยมีช่วงค่า 0 ~ 6 // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getLastdayofmonth (วันที่); // return 3, ระบุวันพุธ // ext.date.getWeekOfyear (วันที่) รับสัปดาห์ของปีที่วันที่อยู่ // @param {วันที่} วันที่วันที่ // @return {number} ส่งคืนสัปดาห์ของปีโดยมีช่วงมูลค่า 1 ~ 53 // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.getWeekOfyear (วันที่); // return 42 // ext.date.isleapyear (วันที่) เป็นปีที่วันที่อยู่หรือไม่? // @param {วันที่} วันที่วันที่ // @return {Boolean} True หมายถึงการก้าวกระโดดปีเท็จหมายถึงปีแบน // ตัวอย่าง var วันที่ = วันที่ใหม่ ('10/20/2012 14:30:00 '); ext.date.isleapyear (วันที่); // ส่งคืนจริง // ext.date.now () ส่งคืนจำนวนมิลลิวินาทีจากเวลาปัจจุบันถึง 1 มกราคม 1970. // date.now () ใช้ฟังก์ชั่นเดียวกันใน Chrome, IE9 และ IE10 // @return {number} ส่งคืนจำนวนมิลลิวินาที // ตัวอย่าง var timestamp = ext.date.now (); // 1351666679575 วันที่ var = วันที่ใหม่ (การประทับเวลา); // พุธ 31 ต.ค. 2555 14:57:59 GMT+0800 (เวลามาตรฐานจีน) // ext.date.parse (อินพุต, รูปแบบ, เข้มงวด) วันที่. parse () มีฟังก์ชั่นที่คล้ายกันตามวันที่สร้างสตริงอินพุต // @Param {สตริง} อินพุตวันที่สตริง // @param {String} รูปแบบวันที่รูปแบบ // @param {บูลีน} ตรวจสอบความถูกต้องของสตริงอินพุตอย่างเข้มงวดซึ่งเป็นเท็จโดยค่าเริ่มต้น // @param {วันที่} ส่งคืนวันที่สร้าง // ตัวอย่าง var input = '31 ตุลาคม 2012 14:30:00'; var format = 'y year m เดือน d วัน h: i: s'; var date = ext.date.parse (อินพุต, รูปแบบ, จริง); // พุธ 31 ตุลาคม 2555 14:30:00 GMT+0800 (เวลามาตรฐานจีน)ตัวอย่าง: ใช้การควบคุมการเลือกวันที่ด้วยสัปดาห์ (สัปดาห์)
1. คำถาม:
คุณสามารถแก้ปัญหาของสัปดาห์ได้อย่างสมบูรณ์แบบโดยใช้ Ext JS ได้หรือไม่?
ในบทความแรกของซีรี่ส์นี้มีการกล่าวกันว่าวันที่ของ Ext ไม่สามารถมองเห็นได้สำหรับสัปดาห์และจำเป็นต้องขยายตัวด้วยตัวเอง
อย่างไรก็ตามมีปัญหาเมื่อขยาย:
วัตถุวันที่ภาษา JavaScript เริ่มต้นในวันอาทิตย์ในแต่ละสัปดาห์
อย่างไรก็ตามวิธีการ getweekofyear ของ Ext JS ดังต่อไปนี้ ISO-8601 และเริ่มต้นทุกสัปดาห์ตั้งแต่วันจันทร์ (มีวิธีการอื่น ๆ ที่ไม่ปฏิบัติตามมาตรฐานนี้ Ext JS ผสมมาตรฐานวันที่และเวลาที่แตกต่างกัน)
ext.date.getWeekOfyear ค่าส่งคืนของวิธีนี้คือตัวเลขระหว่าง 1 ถึง 53
ด้วยวิธีนี้ปัญหาบางอย่างจะเกิดขึ้น:
การแสดงผลการควบคุมการแสดงผลวันที่เริ่มต้นในวันอาทิตย์: (SMTWTFS (วันอาทิตย์วันจันทร์วันอังคาร .. วันเสาร์))
อย่างไรก็ตามเมื่อคุณได้รับสัปดาห์ตามเวลาที่เลือกจะเริ่มจากวันอาทิตย์ นำไปสู่:
ทุกวันอาทิตย์จะน้อยกว่า 1 (ตัวอย่างเช่นในวันอาทิตย์ 2013/08/18 ควรจะเป็น 34 สัปดาห์ แต่วิธีนี้คำนวณเป็นสิ้นสัปดาห์ก่อนหน้า 33 สัปดาห์)
วันที่ = วันที่ใหม่ ("2013/08/18");
var week = ext.date.getWeekOfyear (วันที่);
การแจ้งเตือน ("สัปดาห์ ="+สัปดาห์);
การควบคุมวันที่ Ext JS จะปรากฏขึ้นเป็นเวลา 42 วันโดยค่าเริ่มต้นดังนั้นจะมีปัญหาในการโต้ตอบระหว่างสองปี
ปีนั้นเป็นเวลา 53 สัปดาห์หรือไม่? มันยังคงเป็นสัปดาห์แรกของปีหน้า
2. โซลูชัน:
เมื่อรวมวัตถุวันที่ของ JS และ Ext.date ของ Ext JS เราตระหนักถึงการได้มาของสตริงสัปดาห์
วันอาทิตย์เป็นวันแรกของแต่ละสัปดาห์
จำนวนสัปดาห์ต่อปีมาจาก (1-52) หากเกิน 52 สัปดาห์มันจะถูกนับเป็นสัปดาห์แรกของปีหน้า ตัวอย่างเช่น 2013/12/29 เป็น 53 สัปดาห์ของปี 2013 ซึ่งนับเป็นสัปดาห์แรกของปี 2014
กลับไปที่รูปแบบสัปดาห์เช่น "W1334"
/ * * ส่งคืนเป็น W1334 () 2013/08/20 * 1 ถ้าวันอาทิตย์ ==> สัปดาห์ = สัปดาห์ +1 * getWeekOfYear (EX ใช้ ISO-8601, สัปดาห์เริ่มต้นเดือน) * วันที่ JS (สัปดาห์เริ่มวันอาทิตย์) * 2 ถ้าสัปดาห์> 52 ==> ปี = ปี +1; สัปดาห์ = สัปดาห์ - 52; * 3. ถ้าเดือน == 11 (12 เดือน) และสัปดาห์ <2 ==> ปี = ปี +1; */ฟังก์ชั่น getWeEkStrofDate (วันที่) {var weekTr = null; if (วันที่! = null) {weektr = "w"; var dateyear = date.getlyear (); var dateWeek = ext.date.getWeekOfyear (วันที่); var firstdayofmonth = ext.date.getFirstdayofmonth (วันที่); var day = date.getDate (); var month = date.getMonth (); // วันธรรมดา 0-6 var วันธรรมดา = date.getday (); if (วันธรรมดา === 0) {dateWeek ++; } // สัปดาห์> 52 ==> ปี +1 ถ้า (เดือน == 11) {ถ้า (dateWeek> 52) {DITEYEAR += 1; DateWeek -= 52; } อื่นถ้า (dateWeek <2) {dITEYEAR += 1; }} var yearstr = detEyear.toString (); Yearstr = yearstr.substring (2,4); var dateWeeKSTR = dateWeek.toString (); if (dateWeeKstr.Length <2) {dateWeeKSTR = "0" + dateWeeKSTR; } WEEKSTR += YENSTR; WEEKSTR += DITWEEKSTR; } return weekTr;}