2013-08-27 12 views

Trả lời

22

Bạn có thể sử dụng as.integer để có được giây kể từ kỷ nguyên bắt đầu ...

x <- as.POSIXct(Sys.time()) 
#[1] "2013-08-27 12:37:17 BST" 

class(x) 
#[1] "POSIXct" "POSIXt" 

as.integer(x) 
#[1] 1377603437 

Sử dụng một vector của chuỗi gọi times:

times 
#[1] "2013-08-27 12:39:32" "2013-08-27 12:39:33" "2013-08-27 12:39:34" 
#[4] "2013-08-27 12:39:35" "2013-08-27 12:39:36" "2013-08-27 12:39:37" 
#[7] "2013-08-27 12:39:38" "2013-08-27 12:39:39" "2013-08-27 12:39:40" 
#[10] "2013-08-27 12:39:41" 

as.integer(as.POSIXct(times)) 
#[1] 1377603609 1377603610 1377603611 1377603612 1377603613 1377603614 
#[7] 1377603615 1377603616 1377603617 1377603618 

Nếu không có múi giờ trong chuỗi có thể bạn sẽ phải chỉ định đối số tz cho as.POSIXct, ví dụ as.integer(as.POSIXct(times) , tz = "BST") cho Giờ mùa hè của Anh.

+2

Nếu bạn có độ phân giải phụ thứ hai, bạn cần sử dụng 'as.numeric' thay vì' as.integer' làm phụ thứ hai được lưu dưới dạng thập phân của giây thứ hai – statquant

+0

'POSIXct' đại diện cho thời gian tới giây gần nhất. Đó là định dạng ngày/giờ khác. –

+0

Cảm ơn cả hai bạn, nó sẽ rất tuyệt nếu nó có thể hoạt động với định dạng như "2013-08-27 10: 01: 22.123456", nhưng tôi không thực sự cần bit phụ thứ hai vào lúc này. – swang

3

Câu trả lời được chấp nhận cắt ngắn thời gian cho toàn bộ giây. Tuy nhiên, POSIXct thực sự cung cấp độ phân giải phụ. Như đã đề cập trong các ý kiến ​​của “statquant”, bạn có thể sử dụng as.numeric để có được những kỷ nguyên chính xác:

result = as.numeric(as.POSIXct(Sys.time())) 

Ghi chú rằng với các tùy chọn mặc định để hiển thị con số trong R này sẽ trông giống như nó không có chữ số phía sau số thập phân:

> result 
[1] 1480599768 

Tuy nhiên, chúng chỉ đơn giản là cắt ngắn trong màn hình. Để hiển thị chúng, hãy sử dụng:

> dput(result) 
1480599767.58447 

… hoặc đặt options('digits') thành giá trị cao hơn.