#duration-string #format-duration #days #formatting #ago #time #hours

bin+lib timeago

给定一个持续时间,将其格式化为类似 "N 天前" 的形式。目前不支持将其解析回持续时间。

16 个版本

使用旧的 Rust 2015

0.4.2 2023 年 9 月 18 日
0.4.1 2023 年 1 月 26 日
0.4.0 2022 年 12 月 10 日
0.3.1 2022 年 2 月 24 日
0.0.2 2017 年 9 月 21 日

日期和时间 中排名第 11

Download history 3508/week @ 2024-04-08 3933/week @ 2024-04-15 3740/week @ 2024-04-22 4364/week @ 2024-04-29 4456/week @ 2024-05-06 4230/week @ 2024-05-13 4234/week @ 2024-05-20 3294/week @ 2024-05-27 3569/week @ 2024-06-03 3704/week @ 2024-06-10 4047/week @ 2024-06-17 4853/week @ 2024-06-24 4456/week @ 2024-07-01 3260/week @ 2024-07-08 5472/week @ 2024-07-15 4274/week @ 2024-07-22

每月下载量 17,883
用于 21 Crates(直接使用 19 个)

MIT/Apache

71KB
1.5K SLoC

timeago

在 Rust 中,将持续时间格式化为字符串,如 "1 小时前" 或 "01小时"。

目前它不考虑日历,并假设每个月大约有 30.4 天。

将此类字符串解析回 Duration 不在本库范围内。也许可以查看 chrono-english 库。

在不启用 isolang 功能的情况下,它支持 Rust 版本 1.24 及以上。

API

文档链接

简化后的 API 摘录(伪代码)

pub struct Formatter<L : Language = English>{...}

impl Formatter {
    pub fn new() -> Formatter<English>;
    pub fn with_language(l: Language) -> Self;
    pub fn num_items(&mut self, x: usize) -> &mut Self;
    pub fn max_unit(&mut self, x: TimeUnit) -> &mut Self;
    pub fn min_unit(&mut self, x: TimeUnit) -> &mut Self;
    pub fn too_low(&mut self, x: &'static str) -> &mut Self;
    pub fn too_high(&mut self, x: &'static str) -> &mut Self;
    pub fn max_duration(&mut self, x: Duration) -> &mut Self;
    pub fn ago(&mut self, x: &'static str) -> &mut Self;
    
    pub fn convert(&self, d: Duration) -> String;
    pub fn convert_chrono(&self, from: chrono::DateTime, to: chrono::DateTime) -> String;
}

pub fn from_isolang(x : isolang::Language) -> Option<Box<Language>>;

pub fn format_5chars(d: Duration) -> String;

可以从 isolang::Language 构建一个 Language

翻译

  • 英语
  • 俄语
  • 法语
  • 葡萄牙语(贡献)
  • 德语(未检查)
  • 白俄罗斯语(未检查)
  • 波兰语(未检查)
  • 西班牙语(贡献)
  • 中文(贡献)
  • 罗马尼亚语(贡献)
  • 瑞典语(贡献)
  • 土耳其语(贡献)
  • 日语(贡献)
  • 丹麦语(贡献)
  • 意大利语(贡献)
  • 乌克兰语(贡献)

如果您检查了一些语言并确认它们是正确的,请提交一个 pull request 来删除列表上方的 "(unchecked)" 或 "(contributed)"。

工具

有一个辅助命令行工具,它允许在添加新翻译时更容易地进行实验。

$ cargo run --features isolang en
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/timeago en`
60
1 minute ago
7200
2 hours ago

另请参阅

  • chrono-humanize
  • compound_duration - 将 Duration 分解为周/天/分钟等部分

依赖项

~4MB
~117K SLoC