對於將時間區間轉換成「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,卻是其他兩者的機制勝出。



blog comments powered by Disqus