开发工具【免费下载链接】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 2.13.14 版本 API 参考文档 Humanizer.InDate.Ten.md 为核心系统讲解InDate.Ten这一静态类型它把10 天/10 周/10 个月/10 年后这类时间偏移封装成一组可读性极强的属性与方法并同时支持DateOnly与DateTime两种基准类型。读完本文你将掌握InDate家族InDate.One至InDate.Ten的完整用法、底层生成机制与日历运算语义能够在业务代码中写出今天起 10 天后这样的自解释表达式。一、InDate.Ten是什么InDate.Ten是 Humanizer 流式日期FluentDateAPI 家族中的一个静态嵌套类完整定义位于 InDate.SomeTimeFrom.cspublic static class InDate.Ten它继承自System.Object本身不持有任何实例状态全部成员均为static。从命名即可看出其设计意图用英文数字词Ten作为类名用复数单位Days、Weeks、Months、Years作为成员名让调用代码读起来像一句自然语言。整个类由两大成员族构成成员族成员语义属性4 个Days、Weeks、Months、Years相对当前时刻UTC偏移 10 个单位方法8 个DaysFrom、WeeksFrom、MonthsFrom、YearsFrom各有DateOnly与DateTime两个重载相对调用者提供的基准日期偏移 10 个单位所有属性与方法的返回值类型都是System.DateOnly这也是整个InDate家族与面向DateTime的In家族见 Humanizer.In.Ten.md最本质的区别。二、从现在起属性族Days/Weeks/Months/Years四个无参属性全部返回DateOnly语义为从当前时刻起 10 个 X 单位之后的那一天public static System.DateOnly Days { get; } public static System.DateOnly Weeks { get; } public static System.DateOnly Months { get; } public static System.DateOnly Years { get; }对应的源码实现InDate.SomeTimeFrom.cs揭示了三个关键细节public static DateOnly Days DateOnly.FromDateTime(DateTime.UtcNow.AddDays(10)); public static DateOnly Weeks DateOnly.FromDateTime(DateTime.UtcNow.AddDays(70)); public static DateOnly Months DateOnly.FromDateTime(DateTime.UtcNow.AddMonths(10)); public static DateOnly Years DateOnly.FromDateTime(DateTime.UtcNow.AddYears(10));要点一基准是UtcNow而非Now。四个属性统一以DateTime.UtcNow为计算起点再经DateOnly.FromDateTime截去时间部分、只保留日期。也就是说无论代码运行在哪个时区X 天后的日期始终按 UTC 时刻推算DateOnly返回值本身不带时区信息。要点二周被折算为天。Weeks的底层是AddDays(70)10 × 7而不是AddWeeks——Bcl 的DateTime/DateOnly本身没有AddWeeks方法Humanizer 直接用天来折算语义等价于70 天后。要点三月与年是日历运算。Months/Years委托给AddMonths(10)/AddYears(10)属于日历粒度的推移详见本文第六节的语义辨析而不是按固定 30 天/365 天估算的时长偏移。三、指定基准日的方法族8 个XxxFrom重载当10 天后需要从某个特定日期而非当前时刻开始计算时使用From方法。InDate.Ten为四种单位各提供一对重载共 8 个方法public static System.DateOnly DaysFrom(System.DateOnly date); public static System.DateOnly DaysFrom(System.DateTime date); public static System.DateOnly WeeksFrom(System.DateOnly date); public static System.DateOnly WeeksFrom(System.DateTime date); public static System.DateOnly MonthsFrom(System.DateOnly date); public static System.DateOnly MonthsFrom(System.DateTime date); public static System.DateOnly YearsFrom(System.DateOnly date); public static System.DateOnly YearsFrom(System.DateTime date);两组重载的差异与实现策略源码见 InDate.SomeTimeFrom.cs重载实现特点XxxFrom(DateOnly date)date.AddDays(10)/date.AddMonths(10)/date.AddYears(10)直接在DateOnly上做日历运算无时区、无时刻概念结果确定性强XxxFrom(DateTime date)DateOnly.FromDateTime(date.AddDays(10))等先对DateTime做偏移再截取日期部分返回DateOnly若传入带时间分量如2025-01-20 09:00时间会被丢弃两点值得注意返回值统一是DateOnly。即使传入DateTime得到的结果也只有年月日没有时分秒。这与In.Ten针对DateTime的版本不同后者保留完整时刻。WeeksFrom与DaysFrom计算结果一致WeeksFrom(date)等价于DaysFrom(date)叠加 7 次因为两者底层都落到AddDays70 与 10。四、使用示例从写代码到读代码以官方场景示例 fluent-dates-and-time-spans.mdx 为背景InDate.Ten的典型用法如下using Humanizer; // 1. 相对当前时刻今天起 10 天 / 10 周 / 10 个月 / 10 年后 DateOnly tenDays InDate.Ten.Days; // DateTime.UtcNow 之后第 10 天 DateOnly tenWeeks InDate.Ten.Weeks; // UtcNow 之后第 70 天 DateOnly tenMonths InDate.Ten.Months; // UtcNow 之后第 10 个月日历推移 DateOnly tenYears InDate.Ten.Years; // UtcNow 之后第 10 年 // 2. 相对指定基准从某个固定日期起算推荐用于可重复执行的代码 var startingPoint new DateTime(2025, 1, 20, 9, 0, 0); DateOnly reviewDate InDate.Ten.MonthsFrom(startingPoint); // 2025-11-20 // 3. DateOnly 基准同样适用 DateOnly baseDay new(2025, 2, 20); DateOnly dueDate InDate.Ten.DaysFrom(baseDay); // 2025-03-02 DateOnly anniversary InDate.Ten.YearsFrom(baseDay); // 2035-02-20测试用例 InDateTests.cs 印证了同样的用法模式[Fact] public void InFiveDays() { var baseDate OnDate.January.The21st; var date InDate.Five.DaysFrom(baseDate); Assert.Equal(baseDate.AddDays(5), date); }这段测试同时展示了InDate与OnDate的组合用法先用OnDate.January.The21st构造基准日再交给InDate.Five.DaysFrom完成偏移计算。五、源码溯源InDate.One至InDate.Ten由 T4 模板批量生成InDate.Ten并非手写代码而是由 T4 文本模板 InDate.SomeTimeFrom.tt 生成的。模板的核心循环如下#for (var i 1; i 10; i){ var plural i 1 ? s : ; var day Day plural; ... # public static class # i.ToWords().Dehumanize() # { public static DateOnly # day # DateOnly.FromDateTime(DateTime.UtcNow.AddDays(# i #)); ... } #}#这个模板揭示了整个家族的三条生成规律数量范围固定为 110模板循环i从 1 到 10因此只生成One、Two……Ten十个嵌套类超过 10 的数量没有对应 API。类名由 Humanizer 自身的能力生成i.ToWords()数字转英文单词与.Dehumanize()单词反人化正是 Humanizer 的数字与字符串扩展模板用它们把1变成类名One、把10变成Ten。单复数按数量自动切换plural i 1 ? s : 使得One类里是单数成员Day/Week/Month/Year而Ten类里全部是复数成员Days/Weeks/Months/Years——这也是为什么InDate.Ten.Days是复数而InDate.One.Day是单数。整个InDate类型是public partial classInDate.cs 定义了TheYear与月份属性/XxxOf(year)方法InDate.SomeTimeFrom.cs 定义了数量类各文件通过partial合并为一个完整类型。全部代码被#if NET6_0_OR_GREATER条件编译包裹——因为System.DateOnly自 .NET 6 才引入InDate家族包括InDate.Ten仅在 .NET 6 及以上目标框架中可用这是使用前必须确认的前提。六、语义边界与最佳实践日历运算 ≠ 时长运算MonthsFrom/YearsFrom委托AddMonths/AddYears是日历粒度的推移会遵循目标月份的归一化规则例如 2 月 29 日加 1 年在非闰年会归一化为 2 月 28 日。而Days/Weeks属于固定时长一天始终是 24 小时。官方场景指南 fluent-dates-and-time-spans.mdx 明确建议固定时长用1.5.Days()这类NumberToTimeSpanExtensions扩展如 NumberToTimeSpanExtensions.cs日历推算才用In/InDate家族两者不要混用。无参属性不适合确定性代码InDate.Ten.Days依赖DateTime.UtcNow每次调用结果随当前时刻漂移导致测试不可复现。官方指南的明确建议是需要可重复执行的代码测试、批处理、定时任务断言应注入基准日期改用XxxFrom(date)。同理InDate的月份属性如InDate.April读取的是当前年份测试中应优先使用InDate.AprilOf(2025)这类显式年份形式。DateOnly 与 DateTime 的选择只需要某一天不含时刻时优先DateOnly重载无时区歧义、确定性最强需要保留时刻参与运算时用DateTime重载传入但要注意返回值会被截断为DateOnly需要同时保留偏移后的完整时刻应改用In家族如In.Ten.DaysFrom(startingPoint)返回DateTime。七、相关 API 导航InDate.Ten不是孤立类型它与以下 API 构成完整的流式日期体系可对照查阅Humanizer.InDate.md父类型InDate提供 12 个月份属性、XxxOf(int year)方法与TheYear(int year)Humanizer.InDate.One.md 至InDate.NineTen的九个兄弟类成员采用单数/复数命名结构完全同构Humanizer.In.Ten.md面向DateTime的对应版本返回DateTime而非DateOnlyHumanizer.OnDate.md构造指定日期如OnDate.January.The21st常与InDate.XxxFrom组合使用Humanizer.InDate.Months.cs 与 InDate.Months.tt月份/年份相关成员的生成模板与产物场景指南 fluent-dates-and-time-spans.mdx流式日期与时长 API 的完整使用建议小结InDate.Ten是 Humanizer 流式日期设计中数量 × 单位二维网格上的一个单元4 个from now属性覆盖当前时刻基准8 个XxxFrom方法覆盖显式基准统一返回DateOnly底层由 T4 模板从同一套逻辑生成以保证 110 的命名与语义完全一致。掌握它的关键是记住三点基准时刻用UtcNow、周折算为天、月/年为日历运算在实际项目中优先用From方法注入基准日期以换取确定性与可测试性。赞分享开发工具【免费下载链接】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 流式日期 API 详解InDate.Ten 的 10 天 / 周 / 月 / 年日期计算Humanizer 流式日期 API 详解InDate.Ten 的 10 天 / 周 / 月 / 年日期计算 本篇技术指南聚焦 Humanizer 流式日期开发工具Humanizer InDate.Ten 详解用 DateOnly 流式 API 计算 10 天/周/月/年后的日期Humanizer InDate.Ten 详解用 DateOnly 流式 API 计算 10 天/周/月/年后的日期 InDate.Ten 是 Humaniz开发工具Humanizer 流式日期 API 详解InDate.Ten 实现 10 天/周/月/年的 DateOnly 日期计算Humanizer 流式日期 API 详解InDate.Ten 实现 10 天/周/月/年的 DateOnly 日期计算 Humanizer 的 InDate开发工具上一篇如何快速跑通 whisper-tiny.en 英语语音识别模型下一篇上手 HiGHS5 分钟跑通你的第一个线性规划创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
米拓cms可以做企业网站吗?一文搞懂避坑指南 米拓cms可以做企业网站吗?一文搞懂避坑指南 网站做好了没人访问,这大概是很多老板和项目经理最头疼的噩梦。钱花了,时间耗了,结果打开后台一看,流量惨淡,转化率更是惨不忍睹。很多人第一反应是推广没做好,但在我看来,80%的问题出在建站初期——… · 2026/9/27 11:09:43
5类建站方案对比评测:网站是否需要备案全解析 5类建站方案对比评测:网站是否需要备案全解析 还在为选好的模板网站太丑、功能又不够用而头疼?别急着加钱改代码,先搞清楚一个更根本的问题:你的网站到底 网站是否需要备案… · 2026/9/27 11:09:37
高精度数字式频率计数器与时频精准测试一体化方案解析 频率计数器这个工具,在时频测量领域其实是最基础的仪器之一。很多人一听到“频率计数器”,第一反应是“老古董”,觉得现在随便一台示波器、频谱仪都能看频率,何必单独配一台计数器。但真正做过高精度时频测试的人会明白࿰… · 2026/9/27 11:09:37
做网站平台成本一文搞懂:小白避坑指南 做网站平台成本一文搞懂:小白避坑指南 自己不会代码想做网站,最怕的就是钱花了没效果。别慌,这篇 一文搞懂 做网站平台成本,帮你算清账。很多新手一上来就找开发公司,报价动辄几万,其实大可不必。… · 2026/9/27 11:58:43
本地 AI Agent 平台实测:以 QClaw 为例,聊聊这类工具的优势与局限 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 11:58:37
STM32开发避坑指南:如何高效筛选可信参考方案 1. 为什么“找参考方案”这件事,比写代码更耗新人三个月刚接触 STM32 的朋友常有个错觉:只要装好 Keil、烧进程序、LED 亮了,就算入门了。我带过十几届电子类毕业设计学生,也帮过上百个嵌入式转岗工程师调试板子,发现一… · 2026/9/27 11:58:31
嵌入式C++开发工具链原理:从交叉编译到STM32调试全解析 1. “装了四个软件却不知道是干嘛的”——这根本不是你的问题,是嵌入式C入门最真实的挫败感你刚在VS Code里点完“Install”按钮,电脑弹出四个安装窗口:ARM GNU Toolchain、STM32CubeMX、OpenOCD、ST-Link Utility。你照着某篇教程一步步操作… · 2026/9/27 11:58:24
深圳网站推广优化培训全解:新手入门完整流程 深圳网站推广优化培训全解:新手入门完整流程 网站做好了没人访问,这是很多深圳中小企业老板最头疼的事。很多新手以为只要找个公司把站建好,流量就会像自来水一样哗哗来,结果上线一个月,百度搜不到,谷歌没排名,客户更是零咨询。这种焦虑背后,往往是因… · 2026/9/27 11:58:24
STM32启动失败、串口乱码、调试失联的硬件级根因解析 1. 为什么STM32调试总在“上电那一刻”就失败?——BOOT0与NRST的物理级协同逻辑刚拿到一块崭新的STM32开发板,烧录完程序,按下复位键——没反应;短接BOOT0再上电——还是没反应;换根USB线、重装驱动、重启Keil……折腾… · 2026/9/27 11:58:24
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01