Làm cách nào tôi có thể nhận được vài giây kể từ epoch trong Javascript?


152

Trên Unix, tôi có thể chạy date '+%s'để lấy số giây kể từ epoch. Nhưng tôi cần phải truy vấn rằng trong một trình duyệt phía trước, không phải back-end.

Có cách nào để tìm ra giây kể từ Epoch trong JavaScript không?

Câu trả lời:


246
var seconds = new Date() / 1000;

Hoặc, đối với phiên bản ít hack hơn:

var d = new Date();
var seconds = d.getTime() / 1000;

Đừng quên Math.floor()hoặc Math.round()làm tròn đến số nguyên gần nhất hoặc bạn có thể nhận được một số thập phân rất kỳ lạ mà bạn không muốn:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);

8
var seconds = new Date() / 1000;<- loại ma thuật phức tạp này là gì?
Martin Wickman

3
Re: ma thuật phức tạp: Theo các tài liệu này , Javascript biết cách chuyển đổi một đối tượng Date thành Số. Điều này có nghĩa là bạn có thể nhập Number(new Date())để lấy số hoặc thậm chí +(new Date())hoặc sử dụng bất kỳ trường hợp Ngày nào trong ngữ cảnh số như new Date()/1000Javascript sẽ chuyển đổi một cách hữu ích thể hiện Ngày đó thành một số để làm việc với các phương trình toán học của bạn.
dpmott

59

Thử cái này:

new Date().getTime() / 1000

Bạn có thể muốn sử dụng Math.floor()hoặc Math.round()cắt phần mili giây.


39

Bạn muốn vài giây kể từ epoch

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

sử dụng ví dụ

foo = seconds_since_epoch();

3
Đây phải là câu trả lời vì nó tính đến số thập phân.
James Pack

11

Các giải pháp trên sử dụng các thuộc tính thể hiện. Một cách khác là sử dụng thuộc tính lớp Date.now:

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

Nếu bạn muốn time_in_seconds là một số nguyên, bạn có 2 tùy chọn:

a. Nếu bạn muốn phù hợp với cắt ngắn kiểu C:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

b. Nếu bạn muốn có định nghĩa toán học về phép chia số nguyên để giữ, chỉ cần lấy sàn. (Phân chia số nguyên của Python thực hiện điều này).

time_in_seconds_int = Math.floor(time_in_seconds);

9

Nếu bạn chỉ muốn một giây là toàn bộ số mà không có số thập phân biểu thị mili giây vẫn được đính kèm, hãy sử dụng:

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

5

Bạn có thể tạo một đối tượng Date (sẽ có thời gian hiện tại trong đó) và sau đó gọi getTime()để lấy ms kể từ epoch.

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

Nếu bạn muốn vài giây, sau đó chia cho 1000:

var sec = new Date().getTime() / 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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.