2012-02-26 32 views

Trả lời

154
var seconds = new Date()/1000; 

Hoặc, cho một phiên bản ít hacky:

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

Hãy thử điều 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 nghìn giây.

+6

... Tôi nghĩ rằng ngay cả 'ngày mới()/1000' sẽ hoạt động. –

5

Bạn có thể tạo đối tượng Ngày (sẽ có thời gian hiện tại trong đó) và sau đó gọi getTime() để nhận các ms từ thời đại.

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

Nếu bạn muốn giây, sau đó chia nó bằng 1000:

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

cách ưa thích của tôi:

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

Để biết thêm thông tin về +jump down the rabbit hole.

8

Các giải pháp trên sử dụng các thuộc tính mẫu. Một cách khác là sử dụng các lớp tài sản 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 lựa chọn:

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

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 chỉ có định nghĩa toán học của phân 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); 
28

Bạn muốn giây kể từ kỷ nguyên

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

dụ sử dụng

foo = seconds_since_epoch(); 
+3

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

5

Nếu bạn muốn chỉ giây như một số nguyên mà không có thập phân đại diện cho phần nghìn giây vẫn còn gắn liền, sử dụng này :

var seconds = Math.floor(new Date()/1000); 
Các vấn đề liên quan