Phân tích chuỗi thời gian được định dạng (nghịch đảo của định dạng chuỗi thời gian)


10

Các format-time-stringchức năng có một cuộc tranh luận thời gian như '(21761 64499 350937 0)một chuỗi định dạng như "%y-%m-%d %a %H:%M"và trả về một cái gì đó giống như "15-03-12 Thu 16:49".

Chức năng nghịch đảo, trong đó có là gì "15-03-12 Thu 16:49""%y-%m-%d %a %H:%M", và lợi nhuận '(21761 64499 350937 0)?

Tôi đang cố gắng phân tích thời gian ra khỏi trang web để chuyển đổi chúng thành dấu thời gian ở chế độ org, nhưng tôi gặp khó khăn khi tìm đúng chức năng trong tài liệu emacs.

Chỉnh sửa Tôi đang quảng bá điều này từ bình luận của tôi đến câu trả lời của erikstoke. parse-time-stringorg-parse-time-stringkhông đủ vì trong khi chúng phân tích nhiều chuỗi thời gian tiêu chuẩn, chúng không cho phép các định dạng được chỉ định. Cả hai chức năng đều khá khó hiểu. Đặc biệt, họ thiếu hỗ trợ ISO8601 .

Câu trả lời:


4

parse-time-stringphân tích chuỗi thời gian "chuẩn", như vậy org-parse-time-string. Các tài liệu tuyên bố sau này sẽ nhanh hơn. Không đưa ra một cách để xác định định dạng của chuỗi.

Ngoài ra còn có một chức năng không có giấy tờ parse-iso8601-time-stringphân tích ISO8601 thành một cái gì đó. Tôi không rõ đầu ra là gì.


Thật vậy, tôi đã kiểm tra chúng. Họ thậm chí còn trả về "Đặc tả thời gian không hợp lệ" khi được cung cấp ISO8601, đó là lý do tại sao tôi vẫn đang tìm kiếm.
Matthew Piziak

(parse-time-string (current-time-string))làm việc ở đây
wasamasa

Có một chức năng tuyên bố để làm điều này, nhưng tôi không thấy đầu ra nghĩa là gì. Tôi chỉnh sửa nó thành câu trả lời của tôi.
erikstokes

2

Tôi đã có một tình huống tương tự nhưng không thể tìm thấy bất cứ điều gì làm việc ra khỏi hộp. Nhưng vì org-time-stampxử lý tất cả các loại định dạng, tôi đã tìm ra mã ở đó. Hàm bên dưới sẽ chèn dấu thời gian org từ chuỗi thời gian được cung cấp. Tôi đã không thử nó cho tất cả các loại, nhưng "15-03-12 Thu 16:49"nó sẽ cho "[2015-03-12 tor 16:49]". ( "tor"là thứ năm ở địa phương của tôi).

Vì vậy, câu trả lời này không hoàn toàn khớp với câu hỏi, vì bạn không có cách cung cấp chuỗi định dạng, nhưng hy vọng nó sẽ hoạt động tốt. Nó nên hiểu tất cả các định dạng mà org-time-tem xử lý.

(defun jk-org-insert-time-stamp (time-string)
  (interactive "sTime: ")
  (let ((default-time (apply 'encode-time (decode-time))))
    (org-insert-time-stamp
     (apply 'encode-time (org-read-date-analyze time-string default-time default-time)) t t)))

Điều này không trả lời câu hỏi. Câu hỏi là, how can I parse a string with a specified format? Hàm này chèn dấu thời gian với định dạng đã chỉ định.
Cheeso
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.