新闻详情

新闻详情

首页 / 资讯中心 / 详情

Humanizer In.Eight API 详解:计算“8 个时间单位之后”的 Fluent Date 接口

发布时间:2026/9/25 11:28:40来源:尧图网络
Humanizer In.Eight API 详解:计算“8 个时间单位之后”的 Fluent Date 接口
开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载本文围绕 Humanizer 库的In.Eight静态类展开完整梳理其 7 个“从当前时刻起 8 个时间单位”的属性与 7 个“从指定日期起 8 个时间单位”的方法并结合src/Humanizer/FluentDate下的源码实现与 T4 生成模板说明各成员的底层计算方式、与In.One至In.Ten系列的关系以及使用时需要注意的时间基线与月末边界行为。读完后你应能正确调用In.Eight.Days、In.Eight.MonthsFrom(date)等成员并理解其返回值的时间基UTC与日历运算细节。In.Eight 类概览In.Eight是Humanizer.In偏类型类partial class内部的一个公共静态嵌套类声明为public static class In.Eight其继承关系为System.Object→Eight。它属于 Humanizer 的 FluentDate流式日期构造API 家族In类下按数字组织了One到Ten共 10 个嵌套类每个类回答同一类问题——“从现在或某个基准日期起N 个时间单位之后是什么时刻”。In.Eight即固定数字 8 的那一组。该类的全部源码位于 In.SomeTimeFrom.csEight类定义在第 632 行起它与外层的月份/年份 API 共同组成Humanizer.In的完整 API 面父类的概览可参考版本化文档 Humanizer.In 参考。In.Eight提供的成员分两类类别成员语义属性Days、Hours、Minutes、Months、Seconds、Weeks、Years从“现在”起 8 个对应时间单位之后的DateTime方法DaysFrom(DateTime)、HoursFrom(DateTime)、MinutesFrom(DateTime)、MonthsFrom(DateTime)、SecondsFrom(DateTime)、WeeksFrom(DateTime)、YearsFrom(DateTime)从传入的date起 8 个对应时间单位之后的DateTime所有成员均返回System.DateTime。属性从当前时刻起 8 个时间单位以下 7 个属性均为只读的静态属性语义与 API 参考中的注释一一对应属性文档注释语义签名Days8 days from now当前时刻起 8 天后public static System.DateTime Days { get; }Hours8 hours from now当前时刻起 8 小时后public static System.DateTime Hours { get; }Minutes8 minutes from now当前时刻起 8 分钟后public static System.DateTime Minutes { get; }Months8 months from now当前时刻起 8 个月后public static System.DateTime Months { get; }Seconds8 seconds from now当前时刻起 8 秒后public static System.DateTime Seconds { get; }Weeks8 weeks from now当前时刻起 8 周后public static System.DateTime Weeks { get; }Years8 years from now当前时刻起 8 年后public static System.DateTime Years { get; }从 In.SomeTimeFrom.cs 的实现看这些属性并非简单的DateTime.Now偏移而是全部以UTC 时间为基线计算public static DateTime Seconds DateTime.UtcNow.AddSeconds(8); public static DateTime Weeks DateTime.UtcNow.AddDays(56); // 8 * 7 天 public static DateTime Months DateTime.UtcNow.AddMonths(8);这带来两点实践含义返回值的Kind为Utc。属性在读取的瞬间采样DateTime.UtcNow再做加法因此In.Eight.Days的结果是一个 UTC 时刻若后续要展示为本地时间需自行转换例如经.ToLocalTime()或 Humanizer 的日期人性化 API。“现在”是调用时求值。属性是表达式体每次访问都会重新读取当前时刻而非类加载时的固定值。方法从指定日期起 8 个时间单位*From方法与对应属性的差异仅在于基准点不再使用“当前时刻”而是以参数date为起点。完整签名为public static System.DateTime DaysFrom(System.DateTime date); // 8 days from the provided date public static System.DateTime HoursFrom(System.DateTime date); // 8 hours from the provided date public static System.DateTime MinutesFrom(System.DateTime date); // 8 minutes from the provided date public static System.DateTime MonthsFrom(System.DateTime date); // 8 months from the provided date public static System.DateTime SecondsFrom(System.DateTime date); // 8 seconds from the provided date public static System.DateTime WeeksFrom(System.DateTime date); // 8 weeks from the provided date public static System.DateTime YearsFrom(System.DateTime date); // 8 years from the provided date每个方法都只有一个参数dateSystem.DateTime返回System.DateTime。其实现是对date直接调用 .NET 的DateTime增量方法见 In.SomeTimeFrom.cspublic static DateTime SecondsFrom(DateTime date) date.AddSeconds(8); public static DateTime MinutesFrom(DateTime date) date.AddMinutes(8); public static DateTime HoursFrom(DateTime date) date.AddHours(8); public static DateTime DaysFrom(DateTime date) date.AddDays(8); public static DateTime WeeksFrom(DateTime date) date.AddDays(56); // 8 周固定换算为 56 天 public static DateTime MonthsFrom(DateTime date) date.AddMonths(8); public static DateTime YearsFrom(DateTime date) date.AddYears(8);由于*From方法只是对基准值做纯算术运算结果的Kind属性与传入的date保持一致传入Local得到Local传入Unspecified得到Unspecified这一点与“从 now”属性基于UtcNow的行为形成对比。典型用法示例结合Humanizer.In的其他成员月份属性、TheYear等可以组合出可读性很强的日期计算链例如using Humanizer; // 以固定基准日计算某基准日之后的第 8 周 var baseline new DateTime(2025, 3, 10); var dueDate In.Eight.WeeksFrom(baseline); // 2025-05-0556 天后 // 以“现在”为基准 var meetingUtc In.Eight.Days; // 当前 UTC 时刻 8 天 // 与 On 家族的组合On.January.The21st 之类成员提供基准日 var baseDate On.January.The21st; var target In.Eight.DaysFrom(baseDate);仓库测试 InTests.cs 中有一个同系列的断言模式可直接作为*From方法的验证范式[Fact] public void InFiveDays() { var baseDate On.January.The21st; var date In.Five.DaysFrom(baseDate); Assert.Equal(baseDate.AddDays(5), date); }把其中的In.Five换成In.Eight即可得到对DaysFrom的等价验证断言In.Eight.DaysFrom(baseDate)应等于baseDate.AddDays(8)。实现机制由 T4 模板生成的 One 到 Ten 系列从源码结构看In.Eight并非手写代码而是由 T4 模板批量生成的产物。模板 In.SomeTimeFrom.tt 以for (var i 1; i 10; i)循环为每个数字生成一个嵌套静态类关键生成逻辑为#for (var i 1; i 10; i){ var plural i 1 ? s : ; ... # public static class # i.ToWords().Dehumanize() # { public static DateTime # second # DateTime.UtcNow.AddSeconds(# i #); ... public static DateTime # week # DateTime.UtcNow.AddDays(# i * 7 #); ...由此可以确认三个事实数字到类名的映射由i.ToWords().Dehumanize()完成即1 → One、8 → Eight、10 → Ten因此In.Eight在Humanizer.In偏类型类中占据数字 8 的位置与其相邻的In.Seven、In.Nine结构完全一致。周的换算统一为i * 7天所以In.Eight.Weeks等价于DateTime.UtcNow.AddDays(56)不经过TimeSpan估算结果是精确的 56 天。数字 1 的成员名使用单数形式。模板中i 1 ? s : 使得In.One的成员是Second、Minute、Hour、Day、Week、Month、Year及其…From方法而In.Eight在内的其余类使用复数成员名。从 In.SomeTimeFrom.cs 可见In.One.Second等定义。如果你在补全或检索 API 时搜In.One.Day而无果原因正在于此。月份与年份成员委托给DateTime.AddMonths/DateTime.AddYears属于日历运算而非固定天数的时间跨度In.Eight.MonthsFrom会按日历月份前进例如 2025-03-31 加 8 个月会被钳制到 2025-11-30这与Weeks固定的 56 天形成语义差异。场景文档 fluent-dates-and-time-spans.mdx 对这一点有概括In.One到In.Ten提供DaysFrom、WeeksFrom、MonthsFrom与YearsFrom月/年形式是“calendar-sized operations rather than estimatedTimeSpanvalues”。与 In 类其余成员的关系In.Eight只是Humanizer.In的一角与之同层的成员还包括月份属性January至December返回当前年份该月 1 日与…Of(year)方法以及In.TheYear(int)定义于 In.csInDate偏类型类DateOnly版本如 InDate.SomeTimeFrom.cs在兼容框架上提供与In对称的DateOnly语义On/OnDate家族用于构造“某月某日”的基准日期常作为*From方法的参数来源测试中的On.January.The21st即此类用法见 OnTests.cs。测试侧除 InTests.cs 外生成代码还有专门的覆盖测试 GeneratedFluentDateTests.cs用于验证 T4 生成结果与手写声明的一致性。使用注意事项与边界行为综合源码实现使用In.Eight时建议关注以下几点时区基线Days、Hours、Minutes、Months、Seconds、Weeks、Years七个属性基于DateTime.UtcNow返回Kind Utc的时刻*From方法则保持入参的Kind。跨时区展示前应显式转换。月末钳制MonthsFrom/YearsFrom依赖DateTime.AddMonths/AddYears的语义当目标月份没有对应日期如 1 月 31 日加 8 个月时.NET 会将日期钳制到目标月末。这是 BCL 行为而非 Humanizer 附加逻辑。周恒等于 7 的倍数WeeksFrom(date)严格等于date.AddDays(56)不受夏令时或日历影响。成员名单复数In.Eight的成员均为复数Seconds、Minutes…唯一的例外是In.One使用单数这是模板生成规则的直接结果见 In.SomeTimeFrom.tt。版本适用性本文所述 API 面与当前仓库源码一致且与版本化 API 文档 Humanizer.In.Eight 参考 完全对应InDate等DateOnly姊妹 API 仅在与DateOnly兼容的框架上可用。小结In.Eight是 Humanizer FluentDate API 中数字 8 的固定偏移量载体7 个属性以当前 UTC 时刻为基线7 个*From方法以任意基准日期为起点覆盖秒、分、时、日、周、月、年七种时间单位。其实现由 T4 模板为One至Ten统一生成周偏移固定为 7 的倍数月/年偏移为日历运算。理解这些实现细节后你可以放心地将In.Eight.Days、In.Eight.MonthsFrom(date)等成员用于测试基准构造、到期日计算等场景并与On/InDate家族组合使用。赞分享开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载相关推荐Humanizer In.Eight 详解用流式 API 表达8 个时间单位之后的日期Humanizer In.Eight 详解用流式 API 表达8 个时间单位之后的日期 导读 Humanizer.In.Eight 是 Humanizer开发工具Humanizer FluentDate API 解析In.Three——用一句3 个时间单位之后完成日期计算Humanizer FluentDate API 解析 In.Three ——用一句3 个时间单位之后完成日期计算 In.Three 是 Humanize开发工具Humanizer 流式日期 API 详解In.Seven 的 7 个时间单位属性与方法Humanizer 流式日期 API 详解In.Seven 的 7 个时间单位属性与方法 本篇技术指南围绕 Humanizer 流式日期FluentDate开发工具上一篇如何彻底清理Mac磁盘空间终极macOS应用卸载工具指南下一篇终极指南用MouseTracks可视化你的操作习惯提升数字生活效率创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Atlas 300V 24G昇腾推理卡实战:从安装到YOLOv8部署全指南 2026/9/25 12:08:17

Atlas 300V 24G昇腾推理卡实战:从安装到YOLOv8部署全指南

先说个真实场景。去年我接手了一个工业质检项目,需求很朴素:一台x86服务器上接8路工业相机,每路实时跑YOLOv8做表面缺陷检测。第一反应是上GPU,结果一算账,一块T4的预算能买好几块昇腾推理卡,T4还要考虑供电…

阅读更多 →
Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南 2026/9/25 12:08:17

Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南

测试 【免费下载链接】protractor E2E test framework for Angular apps 项目地址: https://gitcode.com/gh_mirrors/pr/protractor 点击查看 免费下载 Protractor 是面向 Angular(含 AngularJS)应用的端到端测试框架,基于 Node.…

阅读更多 →
NgRx ComponentStore 生命周期钩子详解:provideComponentStore、OnStoreInit、OnStateInit 与 OnDestroy 完整机制 2026/9/25 12:08:17

NgRx ComponentStore 生命周期钩子详解:provideComponentStore、OnStoreInit、OnStateInit 与 OnDestroy 完整机制

前端状态管理 【免费下载链接】platform Reactive State for Angular 项目地址: https://gitcode.com/gh_mirrors/pl/platform 点击查看 免费下载 本文基于 NgRx 官方文档《ComponentStore — Lifecycle》一文展开,系统讲解 ngrx/component-store 中组件…

阅读更多 →
Apache DataFusion 49.0.0 版本解析:Equivalence 系统重构、Parquet 模块化加密与性能优化全景 2026/9/25 12:08:10

Apache DataFusion 49.0.0 版本解析:Equivalence 系统重构、Parquet 模块化加密与性能优化全景

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 导读 本文基于 Apache DataFusion 官方发布的 49.0.0 版 changelog(dev/changel…

阅读更多 →
@microsoft/fast-colors 之 isColorStringWebRGB:Web RGB 颜色字符串校验函数完全指南 2026/9/25 12:08:03

@microsoft/fast-colors 之 isColorStringWebRGB:Web RGB 颜色字符串校验函数完全指南

前端UI组件 【免费下载链接】fast The adaptive interface system for modern web experiences. 项目地址: https://gitcode.com/gh_mirrors/fa/fast 点击查看 免费下载 isColorStringWebRGB 是 FAST 自适应界面系统(The adaptive interface system for…

阅读更多 →
潍坊正规排名前五的铝艺凉亭厂家推荐、铝艺凉亭老牌生产厂、铝艺凉亭专业制造生产厂家有哪些 2026/9/25 12:07:57

潍坊正规排名前五的铝艺凉亭厂家推荐、铝艺凉亭老牌生产厂、铝艺凉亭专业制造生产厂家有哪些

市面上铝艺凉亭选购的四大踩坑痛点对于想要搭建户外休闲空间的用户来说,铝艺凉亭是兼顾美观与实用的理想选择,但不少人在实际选购时都踩过不少坑。总结下来最常见的四大痛点,几乎是所有意向用户都会遇到的共性问题。 材质虚标,耐用…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉