Parsing string waktu yang diformat (kebalikan dari format-time-string)


10

The format-time-stringFungsi membutuhkan argumen waktu seperti '(21761 64499 350937 0)dan format string seperti "%y-%m-%d %a %H:%M"dan mengembalikan sesuatu seperti "15-03-12 Thu 16:49".

Apa fungsi terbalik, yang mengambil "15-03-12 Thu 16:49"dan "%y-%m-%d %a %H:%M", dan kembali '(21761 64499 350937 0)?

Saya mencoba mem-parsing kali dari sebuah situs web untuk mengubahnya menjadi cap waktu mode-org, tetapi saya mengalami kesulitan menemukan fungsi yang tepat dalam dokumentasi emacs.

Sunting Saya mempromosikan ini dari komentar saya ke jawaban erikstoke. parse-time-stringdan org-parse-time-stringtidak mencukupi karena meskipun mengurai banyak string waktu standar, mereka tidak mengizinkan format yang ditentukan. Kedua fungsi ini agak tidak komprehensif. Secara khusus, mereka tidak memiliki dukungan ISO8601 .

Jawaban:


4

parse-time-stringmem-parsing string waktu "standar", seperti halnya org-parse-time-string. Dokumentasi mengklaim yang terakhir akan lebih cepat. Tidak ada yang memberikan cara untuk menentukan format string.

Ada juga fungsi tidak berdokumen parse-iso8601-time-stringyang mem-parsing ISO8601 menjadi sesuatu. Tidak jelas bagi saya apa yang seharusnya menjadi output.


Memang, saya sudah memeriksanya. Mereka bahkan mengembalikan "Spesifikasi waktu tidak valid" ketika memberi makan ISO8601, itulah sebabnya saya masih mencari.
Matthew Piziak

(parse-time-string (current-time-string))bekerja disini
wasamasa

Ada fungsi yang mengklaim melakukan ini, tapi saya tidak melihat apa artinya output. Saya mengeditnya dalam jawaban saya.
erikstokes

2

Saya memiliki situasi yang sama tetapi tidak dapat menemukan sesuatu yang bekerja di luar kotak. Tapi karena org-time-stampmenangani semua jenis format, saya pikir kode itu ada di sana. Fungsi di bawah ini akan menyisipkan stempel waktu org dari string waktu yang disediakan. Saya belum mengujinya untuk semua jenis kali, tetapi untuk "15-03-12 Thu 16:49"itu akan memberi "[2015-03-12 tor 16:49]". ( "tor"Kamis di tempat saya).

Jadi jawaban ini tidak sepenuhnya cocok dengan pertanyaan, karena Anda tidak memiliki cara menyediakan string format, tetapi mudah-mudahan itu akan berhasil juga. Seharusnya memahami semua format yang menangani stempel waktu.

(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)))

ini tidak menjawab pertanyaan. Pertanyaannya adalah, how can I parse a string with a specified format? Fungsi ini menyisipkan timestring dengan format yang ditentukan.
Cheeso
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.