ใน Unix ฉันสามารถวิ่งdate '+%s'
เพื่อรับจำนวนวินาทีตั้งแต่ยุค แต่ฉันต้องถามว่าในเบราว์เซอร์ front-end ไม่ใช่ back-end
มีวิธีหาวินาทีตั้งแต่ Epoch ใน JavaScript หรือไม่
ใน Unix ฉันสามารถวิ่งdate '+%s'
เพื่อรับจำนวนวินาทีตั้งแต่ยุค แต่ฉันต้องถามว่าในเบราว์เซอร์ front-end ไม่ใช่ back-end
มีวิธีหาวินาทีตั้งแต่ Epoch ใน JavaScript หรือไม่
คำตอบ:
var seconds = new Date() / 1000;
หรือสำหรับเวอร์ชันที่แฮ็กน้อยกว่า:
var d = new Date();
var seconds = d.getTime() / 1000;
อย่าลืมMath.floor()
หรือMath.round()
ปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุดหรือคุณอาจได้ทศนิยมที่ไม่ต้องการ:
var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
Number(new Date())
เพื่อรับตัวเลขหรือแม้กระทั่ง+(new Date())
หรือใช้อินสแตนซ์วันที่ใด ๆ ในบริบทที่เป็นตัวเลขเช่นnew Date()/1000
และ Javascript จะช่วยแปลงอินสแตนซ์วันที่นั้นให้เป็นตัวเลขเพื่อทำงานกับสมการคณิตศาสตร์ของคุณ
ลองสิ่งนี้:
new Date().getTime() / 1000
คุณอาจต้องการใช้Math.floor()
หรือMath.round()
ตัดเศษเสี้ยววินาที
คุณต้องการวินาทีตั้งแต่ยุค
function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }
ตัวอย่างการใช้งาน
foo = seconds_since_epoch();
โซลูชันด้านบนใช้คุณสมบัติของอินสแตนซ์ อีกวิธีคือใช้คุณสมบัติคลาสDate.now
:
var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;
หากคุณต้องการ time_in_seconds ให้เป็นจำนวนเต็มคุณมี 2 ตัวเลือก:
หากคุณต้องการให้สอดคล้องกับการตัดสไตล์ C:
time_in_seconds_int = time_in_seconds >= 0 ?
Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);
ข หากคุณต้องการให้นิยามทางคณิตศาสตร์ของการหารจำนวนเต็มถือเพียงแค่พื้น (การแบ่งจำนวนเต็มของ Python ทำสิ่งนี้)
time_in_seconds_int = Math.floor(time_in_seconds);
หากคุณต้องการเพียงไม่กี่วินาทีในจำนวนเต็มโดยไม่มีทศนิยมที่ยังคงแนบกับมิลลิวินาทีให้ใช้สิ่งนี้:
var seconds = Math.floor(new Date() / 1000);
คุณสามารถสร้างวัตถุ Date (ซึ่งจะมีเวลาปัจจุบันอยู่ในนั้น) จากนั้นโทรgetTime()
เพื่อรับ ms ตั้งแต่ยุค
var ms = new Date().getTime();
หากคุณต้องการวินาทีแล้วหารด้วย 1,000:
var sec = new Date().getTime() / 1000;
วิธีที่ฉันชอบ:
var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;
รุ่นที่ง่ายที่สุด:
Math.floor(Date.now() / 1000)
ใน chrome คุณสามารถเปิดคอนโซลด้วย F12 และทดสอบรหัสต่อไปนี้:
var date = new Date().getTime()
console.debug('date: ' + date);
if (Date.now() < date)
console.debug('ko');
else
console.debug('ok');
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
var seconds = new Date() / 1000;
<- เวทมนตร์แบบลับ ๆ นี่คืออะไร?