ฉันจะได้รับวินาทีจากยุคใน Javascript ได้อย่างไร


152

ใน Unix ฉันสามารถวิ่งdate '+%s'เพื่อรับจำนวนวินาทีตั้งแต่ยุค แต่ฉันต้องถามว่าในเบราว์เซอร์ front-end ไม่ใช่ back-end

มีวิธีหาวินาทีตั้งแต่ Epoch ใน JavaScript หรือไม่

คำตอบ:


246
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);

8
var seconds = new Date() / 1000;<- เวทมนตร์แบบลับ ๆ นี่คืออะไร?
Martin Wickman

3
Re: magic arcane: สำหรับเอกสารเหล่านี้ Javascript รู้วิธีแปลง Date date เป็น Number ซึ่งหมายความว่าคุณสามารถพิมพ์Number(new Date())เพื่อรับตัวเลขหรือแม้กระทั่ง+(new Date())หรือใช้อินสแตนซ์วันที่ใด ๆ ในบริบทที่เป็นตัวเลขเช่นnew Date()/1000และ Javascript จะช่วยแปลงอินสแตนซ์วันที่นั้นให้เป็นตัวเลขเพื่อทำงานกับสมการคณิตศาสตร์ของคุณ
dpmott

59

ลองสิ่งนี้:

new Date().getTime() / 1000

คุณอาจต้องการใช้Math.floor()หรือMath.round()ตัดเศษเสี้ยววินาที


39

คุณต้องการวินาทีตั้งแต่ยุค

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

ตัวอย่างการใช้งาน

foo = seconds_since_epoch();

3
นี่ควรเป็นคำตอบที่คำนึงถึงทศนิยม
James Pack

11

โซลูชันด้านบนใช้คุณสมบัติของอินสแตนซ์ อีกวิธีคือใช้คุณสมบัติคลาส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);

9

หากคุณต้องการเพียงไม่กี่วินาทีในจำนวนเต็มโดยไม่มีทศนิยมที่ยังคงแนบกับมิลลิวินาทีให้ใช้สิ่งนี้:

var seconds = Math.floor(new Date() / 1000);

5

คุณสามารถสร้างวัตถุ Date (ซึ่งจะมีเวลาปัจจุบันอยู่ในนั้น) จากนั้นโทรgetTime()เพื่อรับ ms ตั้งแต่ยุค

var ms = new Date().getTime();

หากคุณต้องการวินาทีแล้วหารด้วย 1,000:

var sec = new Date().getTime() / 1000;

4

วิธีที่ฉันชอบ:

var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกระโดดลงหลุมกระต่าย+




0
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);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.