轉換口語時間區間的 Perl 模組
作者:gugod 發佈於:對於將時間區間轉換成「3 minutes 29 seconds ago」這種口語化敘述的模組,在 CPAN 上有這四個:
Time::Duration
Time::Elapsed
DateTime::Format::Duration
DateTime::Format::Human::Duration
前兩者提供的的函式的輸入是將秒數(比如說 7240 這樣的整數),後兩者則是 DateTime::Duration
物件。
如果不必達到嚴謹的效果、甚至模糊一些比較好的話,則 Time::Duration::duration
這個函式的效果最好。
比較的程式與輸出見 https://gist.github.com/947706
DateTime::Format::Duration
的輸出格式是要手動指定的,因此不在比較表中。
在時間區間超出一小時後,只有 Time::Duration::duration
函式會捨入秒單位的數字。但如果需要做 I18N / L10N,卻是其他兩者的機制勝出。