开发工具【免费下载链接】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),仅供参考
企业数字化 ERP 产品动态
相关推荐
归一化判别图嵌入实现TE过程故障诊断的MATLAB实践 1. 项目背景与问题定义1.1 TE 过程:从仿真平台到故障诊断标准测试床聊起工业过程故障诊断,绕不开的一个名字就是 TE 过程(Tennessee Eastman Process,田纳西-伊斯曼过程)。这个仿真平台最早是 Eastman 化学公司的研究人… · 2026/9/25 11:28:32
Comsol相场法模拟横观各向同性水力压裂:建模与实操 干水力压裂数值模拟这块儿,绕不开的话题就是相场法。这两年用 Comsol 做相场断裂的案例越来越多,但大多停留在各向同性介质,一旦碰上页岩、层状岩体这类横观各向同性介质,很多默认的设置就直接失灵了。这个项目就是一次完整的实战… · 2026/9/25 11:28:32
MinGW编译PCL全家桶:Qt点云开发环境搭建指南 简介:面向需要在Windows下使用Qt MinGW工具链进行三维点云处理的开发者,这是一份基于Qt MinGW编译的PCL(点云库)及其依赖库整合包,涵盖Boost、Eigen、FLANN、Qhull、VTK等关键组件,可解决逐项手动编译依赖耗… · 2026/9/25 12:07:28
成都中式仿古门窗厂家有哪些 创馨家门窗排名前五 行业现状与选择指南 中式仿古门窗选购前必须搞懂的底层逻辑很多人在装修中式别墅、乡村自建房或者改造古风民宿时,对仿古门窗的认知还停留在好看就行的层面,但实际上这是一门融合传统美学与现代工艺的系统工程。从材质选择到工艺落地,从性能适配到服务落地&#… · 2026/9/25 12:07:21
2026亲测10款降AIGC工具红黑榜!TaoToken统一Key接入实测与达标率全解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 12:07:21
Python日志体系从零到生产级:配置详解、结构设计与排障实战 直接根据我日常写代码、维护服务的经验,把Python日志这块一次性说透。日志这玩意儿,平时写代码的时候总觉得是小事,出问题的时候才想起来当初没好好弄。但等你真的去维护一个跑了几百天的服务,或者半夜三点被叫起来排查一个偶发问… · 2026/9/25 12:07:15
香格里拉买牦牛肉去哪靠谱?杰塘牦牛肉门店信息与服务全梳理 香格里拉买牦牛肉去哪靠谱?杰塘牦牛肉门店信息与服务全梳理【摘要】 牦牛肉是香格里拉代表性的高原特色生鲜与特产品类,也是本地居民日常采购与游客伴手礼的热门选择。本文以杰塘牦牛肉为梳理对象,从可核验的主体资质、地理位置、主营产品、服… · 2026/9/25 12:07:15
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37