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

15.8.1 path กับ polygon