Làm thế nào để phân tích cú pháp mili giây?


85

Làm cách nào để sử dụng strptimehoặc bất kỳ hàm nào khác để phân tích cú pháp tem thời gian với mili giây trong R?

time[1]
# [1] "2010-01-15 13:55:23.975"
strptime(time[1], format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time[1], format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`

Câu trả lời:


121

Lịch sự của ?strptimetệp trợ giúp (với ví dụ được thay đổi thành giá trị của bạn):

 z <- strptime("2010-01-15 13:55:23.975", "%Y-%m-%d %H:%M:%OS")
 z # prints without fractional seconds
 op <- options(digits.secs=3)
 z
 options(op) #reset options

Cảm ơn, tôi đã bỏ lỡ điều đó trong tài liệu strptime. Tôi đang tìm kiếm một ký tự định dạng và đã bỏ cuộc khi không thấy.
tìm tín hiệu

8
Nếu tôi có thể đặt một đài tưởng niệm để vinh danh bạn, tôi sẽ!
jkff

2
tôi cũng vậy! Bit "% OS" thật tuyệt vời.
Pierre D

Điều này chỉ có trong python3 hay gì đó? Trong python2.7.8 của tôi: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Traceback (lần gọi gần đây nhất): Tệp "<stdin>", dòng 1, trong <module> Tệp "/opt/pythons/2.7.8/lib/python2.7/_strptime.py", dòng 467, trong _strptime_time return _strptime (data_string, format) [0] Tệp "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py ", dòng 317, trong _strptime (bad_directive, format)) ValueError: 'O' là một chỉ thị không hợp lệ ở định dạng '% Y-% m-% d% H:% M:% OS '
firebush

1
@firebush: Nó ở R. Nó có thể yêu cầu "% Y-% m-% d% H:% M:% OS3" trên một số nền tảng. Việc triển khai định dạng "Hệ điều hành" được gắn nhãn dành riêng cho Hệ điều hành trên các trang trợ giúp.
IRTFM

31

Bạn cũng có thể sử dụng strptime(time[1], "%OSn")nơi 0 <= n <= 6 mà không cần phải đặt digits.secs.

Tài liệu cho biết "Cái nào trong số này được hỗ trợ là tùy thuộc vào hệ điều hành." vì vậy YMMV.


2
Điều này cũng không hoạt động đối với tôi trên Ubuntu. Đó là sản lượng NA.
Prakash
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.