JavaScript วันและเวลา

 ใช้ class ชื่อ Date เป็นตัวจัดการกับวันที่และเวลา


สร้างออปเจ็ค Date ด้วย constructor


let now = new Date(); //วันและเวลาปัจจุบัน

let epoch = new Date(0); //วันและเวลาเป็น milisecond จาก unix epoch (Midnight, January 1st, 1970, GMT)


let century = new Date(2100,         // ปี ค.ศ. 2100

                       0,            // มกราคม

                       1,            // วันที่หนึ่ง

                       2, 3, 4, 5);  // 02:03:04.005, เวลาท้องถิ่น


เดือนแรกของปีจะเป็นเดือน 0 แต่วันแรกของปีจะเป็นวันที่ 1

ถ้าไม่ใส่เวลาค่าจะกลายเป็นศูนย์ซึ่งเท่ากับเที่ยงคืนของวันนั้นๆ


สร้างวันและเวลาตามรูปแบบมาตรฐานสากล UTC (Universal Time, Coordinated)


let century = new Date(Date.UTC(2100, 0, 1)); //เที่ยงคืนวันที่ 1 มกราคม 2100


console.log(century)// =Fri Jan 01 2100 02:03:04 GMT+0700 (Indochina Time)

console.log(century.toUTCString()) //=Thu, 31 Dec 2099 19:03:04 GMT

console.log(century.toISOString()) //=2100-01-01T00:00:00.000Z


สร้างจาก string


let century = new Date("2100-01-01T00:00:00Z"); 

let century = new Date('Fri Jan 01 2100 07:00:00 GMT+0700 (Indochina Time)'); 

let century = new Date('Fri Jan 01 2100 07:00:00 GMT+0700'); 

let century = Date.parse('Fri Jan 01 2100 07:00:00 GMT+0700'); //=4102444800000


Method ของ class Date:

  • getFullYear()
  • getUTCFullYear()
  • setFullYear()
  • setUTCFullYear()
สำหรับส่วนอื่นๆให้แทน  “FullYear” ด้วย  “Month”, “Date”, “Hours”, “Minutes”, “Seconds”, “Milliseconds” , “Day” 

setFullYear(yearValue, monthValue, dateValue) สามารถระบุเดือนและวันได้ด้วย

setHours(hoursValue, minutesValue, secondsValue, msValue) สามารถระบุส่วนอื่นๆของเวลาได้

getDay() ค่าที่ได้จะเป็น 0-6 แทนวันอาทิตย์ถึงเสาร์ อ่านได้อย่างเดียว setDay() ไม่มี

Timestamps


JavaScript เก็บวันที่และเวลาเป็น integer ในหน่วย milisecond จากเวลาเริ่มต้นของระบบ UNIX (EPOCH) ซึ่งคือ วันที่ 1 มกราคม ค.ศ. 1970 เวลาจากนี้จะมีค่าบวกส่วนเวลาก่อน EPOCH จะเป็นค่าลบ ช่วงของค่าที่เป็นไปได้คือ  ±8,640,000,000,000,000 milliseconds หรือตั้งแต่วันที่ 20 เมษายน ก่อน ค.ศ. 271821 ถึง วันที่ 13 กันยายน ค.ศ. 275760 ค่านี่เกินไปจากช่วงนี้จะทำให้ค่าของ Date กลายเป็น NaN หรือแปลงเป็น String "Invalid Date"

let now = new Date(); 
now.getTime(); //= 1712838969602
now.setTime(1712838969602);//=Thu Apr 11 2024 19:36:09 GMT+0700 (Indochina Time)
Date.now(); //Return current time=1712839123364 

High-Resolution Timestamps

ใช้   performance.now() จะคืนค่าเป็นจุดทศนิยมของ millisecond 
Function นี้ไม่อยู่ในมาตรฐานของ ECMAScript แต่ Browser ส่วนใหญ่และ Node รองรับ
ในบาง Browser อาจจะต้องตั้งค่าให้ใน setting เพื่อให้คืนค่าที่แม่นยำขึ้น บางครั้ง function นี้จะถูกลดทอนความแม่นยำไว้เพื่อความปลอดภัย

การคำนวณวันที่และเวลา

สามารถใช้เครื่องหมายเปรียบเทียบ   < ,  <= ,  > , >=  ได้ สามารถนำวันที่มาบอกลบกันได้ ค่าที่ได้จะเป็น integer มีหน่วยเป็น milisecond การคำนวณจะใช้ค่าจาก Method valueOf() ที่คืนค่าเป็น milisecond

ส่วนใหญ่การคำนวนในหน่วยวันเดือนปี การใช้ Function จะสะดวกกว่าการคำนวณเป็น milisecond

let d = new Date();

d.setMonth(d.getMonth() + 3, d.getDate() + 14); //บวกวันเพิ่มไปสามเดือนกับสองอาทิตย์


การตั้งรูปแบบการแสดงผล

let d = new Date(2020, 0, 1, 17, 10, 30); // 5:10:30pm on New Year's Day 2020

d.toString()  // => "Wed Jan 01 2020 17:10:30 GMT-0800 (Pacific Standard Time)"

d.toUTCString()         // => "Thu, 02 Jan 2020 01:10:30 GMT"

d.toLocaleDateString()  // => "1/1/2020": 'en-US' locale

d.toLocaleTimeString()  // => "5:10:30 PM": 'en-US' locale

d.toISOString()         // => "2020-01-02T01:10:30.000Z"


toString()

    แสดงค่าตามเวลาท้องถิ่น แสดงผลตามรูปแบบอเมริกา

toUTCString()

    แสดงค่าตามเวลา UTC แสดงผลตามรูปแบบอเมริกา

toISOString()

    แสดงค่าตามรูปแบบ ISO-8601 มีตัว T กั้นระหว่างวันและเวลา ตัว Z ที่อยู่ท้ายสุดแสดงถึงเวลา UTC

toLocaleString()

    แสดงค่าคามเวลาท้องถิ่น ใช้รูปแบบท้องถิ่น

toDateString()

    แสดงวันตามเวลาท้องถิ่น แสดงผลตามรูปแบบอเมริกา

toLocaleDateString()

    แสดงวันตามเวลาท้องถิ่น แสดงผลตามรูปแบบท้องถิ่น

toTimeString()

    แสดงเวลาตามเวลาท้องถิ่น แสดงผลตามรูปแบบอเมริกา

toLocaleTimeString()

     แสดงเวลาตามเวลาท้องถิ่น สดงผลตามรูปแบบท้องถิ่น









Comments

Popular posts from this blog

15.8.4 การวาดลงบน cavas

15.8.3 Graphics Attributes