ฉันจะแปลงวันที่ปกติ2012.08.10
เป็น unix timestamp ใน javascript ได้อย่างไร
Fiddle: http://jsfiddle.net/J2pWj/
ฉันเคยเห็นโพสต์มากมายที่นี่ที่แปลงเป็น PHP, Ruby และอื่น ๆ ... แต่ฉันต้องทำสิ่งนี้ภายใน JS
ฉันจะแปลงวันที่ปกติ2012.08.10
เป็น unix timestamp ใน javascript ได้อย่างไร
Fiddle: http://jsfiddle.net/J2pWj/
ฉันเคยเห็นโพสต์มากมายที่นี่ที่แปลงเป็น PHP, Ruby และอื่น ๆ ... แต่ฉันต้องทำสิ่งนี้ภายใน JS
unix timestamp
เป็นพื้นฐานของวิศวกรรมและวิทยาศาสตร์คอมพิวเตอร์ทั้งหมด หวังว่าจะมีวิธีอำนวยความสะดวกในตัว ตอนนี้ฉันใช้Math.floor((+new Date()) / 1000);
คำตอบ:
new Date('2012.08.10').getTime() / 1000
ตรวจสอบเอกสารวัน JavaScript
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
สิ่งสำคัญคือต้องเพิ่มtoFixed(0)
เพื่อลบทศนิยมเมื่อหารด้วย 1,000 เพื่อแปลงจากมิลลิวินาทีเป็นวินาที
.getTime()
ฟังก์ชันส่งกลับประทับเวลาในหน่วยมิลลิวินาที แต่ timestamps ยูนิกซ์ที่แท้จริงอยู่เสมอในไม่กี่วินาที
คุณควรตรวจสอบ api moment.js มันใช้งานง่ายมากและมีคุณสมบัติในตัวมากมาย
ฉันคิดว่าสำหรับปัญหาของคุณคุณสามารถใช้สิ่งนี้:
var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
คุณสามารถใช้ตัวดำเนินการ unary +
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - ดูภายใต้วันที่
/
เป็นตัวดำเนินการทางคณิตศาสตร์ นอกจากนี้ให้toFixed
ส่งคืนสตริงไม่ใช่ตัวเลขในกรณีที่ประเภทนั้นสำคัญ ..
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
ในกรณีนี้สิ่งสำคัญคือต้องส่งคืนเฉพาะจำนวนเต็ม (ดังนั้นการหารง่ายๆจะไม่ทำ) และส่งคืนเฉพาะวินาทีที่ผ่านไปจริงเท่านั้น (นั่นคือเหตุผลที่รหัสนี้ใช้Math.floor()
และไม่ใช้Math.round()
)
คุณสามารถใช้Date.parse ()แต่รูปแบบอินพุตที่ยอมรับนั้นขึ้นอยู่กับการนำไปใช้งาน อย่างไรก็ตามหากคุณสามารถแปลงวันที่เป็นรูปแบบ ISO (YYYY-MM-DD)การใช้งานส่วนใหญ่ควรเข้าใจ
คุณสามารถทำได้โดยใช้ Date.parse () Method
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") เอาท์พุท -> 1456959600000
Date.parse ("2015-12-12") เอาต์พุต -> 1449878400000
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
หลังจากเปรียบเทียบการประทับเวลากับการประทับเวลาจาก PHP แล้วข้อใดข้างต้นไม่ถูกต้องสำหรับเขตเวลาของฉัน โค้ดด้านล่างให้ผลลัพธ์เหมือนกับ PHP ซึ่งสำคัญที่สุดสำหรับโครงการที่ฉันกำลังทำอยู่
function getTimeStamp(input) {
var parts = input.trim().split(' ');
var date = parts[0].split('-');
var time = (parts[1] ? parts[1] : '00:00:00').split(':');
// NOTE:: Month: 0 = January - 11 = December.
var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
return d.getTime() / 1000;
}
// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');
console.log(start + ' - ' + end);
ฉันใช้สิ่งนี้บน NodeJS และเรามีเขตเวลา 'ออสเตรเลีย / ซิดนีย์' ดังนั้นฉันต้องเพิ่มสิ่งนี้ในไฟล์. env:
TZ = 'Australia/Sydney'
ข้างต้นเทียบเท่ากับ:
process.env.TZ = 'Australia/Sydney'
แปลงเวลาประทับเพื่อประทับเวลายูนิกซ์
const date = 1513787412;
const unixDate = new Date(date * 1000);// Dec 20 2020 (object)
เพื่อรับ timeStamp หลังการแปลง
const TimeStamp = new Date(date*1000).getTime(); //1513787412000