Humanizer 流式日期 API 详解:On.June 类与六月日期访问器

发布时间:2026/9/27 21:41:57

Humanizer 流式日期 API 详解:On.June 类与六月日期访问器 开发工具【免费下载链接】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 是 .NET 生态中专注于字符串、枚举、日期与时间的人性化处理库。其中FluentDate流式日期子模块提供了一组「以自然语言方式构造日期」的 APIOn.June正是该模块中用于表示「当前年份六月某一天」的静态类。本文以 website/versioned_docs/version-2.14.1/api/Humanizer.On.June.md 为骨架结合源码与测试完整讲解该类 30 个静态属性与 1 个静态方法的用法、底层实现与适用场景。读完本文你将掌握如何在业务代码中直接写出On.June.The15th这类自解释性极强的日期表达式。On.June 类概览On.June是嵌套在On静态类内部的公开类位于Humanizer命名空间下用于提供六月的流式日期访问器fluent date accessors。public class On.June继承关系System.Object→On.June即直接继承System.Object无额外基类类修饰符public可被外部直接访问成员性质全部为public static成员无需实例化即可调用文档路径API 参考文档位于 website/versioned_docs/version-2.14.1/api/Humanizer.On.June.md当前主版本对应文档为 website/docs/api/Humanizer.On.June.md在 On.Days.cs 中On是public class OnJune是其内部嵌套类。整个On类共包含 12 个月份的嵌套类January 至 DecemberJune是其中之一。静态属性The1st 到 The30thOn.June提供 30 个静态只读属性分别对应六月的 1 日至 30 日。每个属性均返回System.DateTime类型表示当前年份的对应日期。public static System.DateTime The10th { get; }完整属性清单如下属性名返回日期属性名返回日期The1st当前年 6 月 1 日The16th当前年 6 月 16 日The2nd当前年 6 月 2 日The17th当前年 6 月 17 日The3rd当前年 6 月 3 日The18th当前年 6 月 18 日The4th当前年 6 月 4 日The19th当前年 6 月 19 日The5th当前年 6 月 5 日The20th当前年 6 月 20 日The6th当前年 6 月 6 日The21st当前年 6 月 21 日The7th当前年 6 月 7 日The22nd当前年 6 月 22 日The8th当前年 6 月 8 日The23rd当前年 6 月 23 日The9th当前年 6 月 9 日The24th当前年 6 月 24 日The10th当前年 6 月 10 日The25th当前年 6 月 25 日The11th当前年 6 月 11 日The26th当前年 6 月 26 日The12th当前年 6 月 12 日The27th当前年 6 月 27 日The13th当前年 6 月 13 日The28th当前年 6 月 28 日The14th当前年 6 月 14 日The29th当前年 6 月 29 日The15th当前年 6 月 15 日The30th当前年 6 月 30 日以源码实现为例The1st与The10th的实际定义如下On.Days.cs/// summary /// The 1st day of June of the current year /// /summary public static DateTime The1st new(DateTime.Now.Year, 6, 1); /// summary /// The 10th day of June of the current year /// /summary public static DateTime The10th new(DateTime.Now.Year, 6, 10);属性命名与序数词规则属性命名遵循英文序数词惯例1、2、3 对应The1st、The2nd、The3rd21、22、23 对应The21st、The22nd、The23rd其余日期统一使用The4th至The30th形式。这一命名由 On.Days.tt 模板在生成时通过day.Ordinalize()扩展方法自动产生无需手工维护也保证了 12 个月份的命名风格完全一致。静态方法The(int dayNumber)除 30 个固定属性外On.June还提供一个通用方法用于访问任意日期只要该日期在六月范围内public static System.DateTime The(int dayNumber);参数dayNumber类型System.Int32表示希望获取的六月中的第几天返回值System.DateTime即当前年份 6 月dayNumber日的日期源码实现On.Days.cspublic static DateTime The(int dayNumber) new(DateTime.Now.Year, 6, dayNumber);典型调用示例// 获取当前年份 6 月 15 日 var midJune On.June.The(15); // 与属性形式等价 var sameDate On.June.The15th;参数边界说明由于The(int)直接以dayNumber作为DateTime构造函数的日参数当传入值超出 6 月的合法天数范围如0、31或负数时System.DateTime构造函数会抛出ArgumentOutOfRangeException。从源码结构可以推断这是The(int)与固定属性之间的关键差异——固定属性在生成时已按 6 月实际天数30 天预先校验而动态方法要求调用方自行保证dayNumber处于1到30之间。此外dayNumber为int类型而非枚举或校验型类型因此建议在传入业务数据前显式校验。底层实现T4 模板驱动的代码生成On.June以及On类中其余 11 个月份嵌套类并非手写代码而是由 T4 文本模板 On.Days.tt 自动生成。模板核心逻辑如下const int leapYear 2012; for (var month 1; month 12; month) { var firstDayOfMonth new DateTime(leapYear, month, 1); var monthName firstDayOfMonth.ToString(MMMM); // 生成 The(int dayNumber) 方法 public static DateTime The(int dayNumber) new(DateTime.Now.Year, # month #, dayNumber); for (var day 1; day DateTime.DaysInMonth(leapYear, month); day) { var ordinalDay day.Ordinalize(); // 生成 The1st / The2nd / ... 静态属性 public static DateTime The# ordinalDay # new(DateTime.Now.Year, # month #, # day #); } }几个值得注意的实现细节闰年锚点模板以 2012 年闰年为基准计算每月天数因此 2 月会生成 29 个属性The1st至The29th其余月份按其自然天数生成。6 月固定生成 30 个属性与文档中的属性清单完全一致。序数词生成属性名中的1st、2nd、3rd等后缀由 Humanizer 自身的Ordinalize()扩展方法产出这恰好是 Humanizer「自我使用」的一个实例。月份名称通过firstDayOfMonth.ToString(MMMM)得到本地化的完整月份名January、February 等用于类名与 XML 注释。年份来源所有属性与方法统一使用DateTime.Now.Year即「当前年份」。这意味着属性值会随系统当前年份的变化而动态改变而非固定常量。与 In.June / In.JuneOf 的关系和区别在 Humanizer 的 FluentDate 模块中On与In是两个互补的入口In.Months.cs 提供了月份粒度的访问器/// summary /// Returns 1st of June of the current year /// /summary public static DateTime June new(DateTime.UtcNow.Year, 6, 1); /// summary /// Returns 1st of June of the year passed in /// /summary public static DateTime JuneOf(int year) new(year, 6, 1);两者对比如下维度On.JuneIn.June/In.JuneOf(int)定位粒度日1 日至 30 日月仅当月 1 日年份来源DateTime.Now.Year当前年份June用当前年份JuneOf(year)用指定年份返回类型System.DateTimeSystem.DateTime典型用途表达「某年六月的某一天」表达「某年六月的第一天」实际使用中On.June.The5th与In.June的语义层级不同前者精确到日后者仅到月首。若需要指定非当前年份的六月某日从源码结构看On.June系列并未提供年份参数版本需要自行组合如new DateTime(2025, 6, 15)或配合In.JuneOf思路手写构造函数。测试验证与使用示例Humanizer 仓库通过 tests/Humanizer.Tests/FluentDate/OnTests.cs 对On系列访问器进行了验证模式为「断言属性值与DateTime构造函数等价」[Fact] public void OnJanuaryThe23rd() Assert.Equal(new(DateTime.Now.Year, 1, 23), On.January.The23rd); [Fact] public void OnDecemberThe4th() Assert.Equal(new(DateTime.Now.Year, 12, 4), On.December.The4th); [Fact] public void OnFebruaryThe() Assert.Equal(new(DateTime.Now.Year, 2, 11), On.February.The(11));In.June的对应测试位于 InTests.cs[Fact] public void InJune() Assert.Equal(new(DateTime.Now.Year, 6, 1), In.June); [Fact] public void InJuneOf2009() Assert.Equal(new(2009, 6, 1), In.JuneOf(2009));此外GeneratedFluentDateTests.cs 中包含(June, 6)的月份序号映射数据用于对生成代码做系统性校验确保每个月份的类名、月份号与日期属性数量一致。实际业务场景On.June最适合在以下场景中提升代码可读性using Humanizer; // 场景一报表中固定引用「每年六月的结算日」 var settlementDay On.June.The30th; // 场景二年中节点判断当前年份六月下旬 if (DateTime.Now On.June.The15th) { // 进入下半年预算周期 } // 场景三动态天数如用户选择的日期 var selected On.June.The(userInputDay);这类表达式的优势在于On.June.The15th相比new DateTime(DateTime.Now.Year, 6, 15)语义一目了然无需阅读构造函数参数即可理解「六月的第 15 天」且天然与「当前年份」绑定避免了手工拼装年份的样板代码。使用注意点年份语义所有On.June成员基于DateTime.Now.Year在跨年运行的长驻进程如后台服务中其返回值会随系统时钟变化不适合作为「冻结的固定日期常量」缓存。动态方法的范围校验The(int dayNumber)对越界值无内置保护传入1到30之外的值将触发ArgumentOutOfRangeException调用方需自行校验。时区因素On.June使用DateTime.Now本地时间取年份而In.June使用DateTime.UtcNowUTC 时间取年份两者在时区边界跨年瞬间可能产生年份差异从源码可确认这一细节差异。API 版本本文描述的On.June完整成员30 个属性 1 个方法对应仓库中version-2.14.1的 API 参考文档现行主分支文档 website/docs/api/Humanizer.On.June.md 内容与之保持一致。综上On.June是 Humanizer FluentDate 模块中「月份 日」粒度的流式日期入口通过代码生成保证了 12 个月份 API 的高度一致性适合在需要以自然语言风格构造「当前年份某月某日」的业务代码中直接采用。赞分享开发工具【免费下载链接】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 详解On.November 类与 11 月日期访问器Humanizer 流式日期 API 详解On.November 类与 11 月日期访问器 本篇技术指南聚焦于 .NET Humanizer 库中 On.No开发工具Humanizer 流式日期 API 详解使用 On.June 类快速构造当年六月的任意日期Humanizer 流式日期 API 详解使用 On.June 类快速构造当年六月的任意日期 Humanizer 的 FluentDate 子命名空间提供了一开发工具Humanizer 流式日期 API 详解OnDate.February 与 2 月日期访问器Humanizer 流式日期 API 详解OnDate.February 与 2 月日期访问器 Humanizer 提供了一套以自然语言为核心的 .NET 字开发工具上一篇G-Helper深度解析华硕笔记本性能优化的完整方案下一篇NVIDIA Profile Inspector终极指南3步解锁显卡隐藏性能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/27 22:26:59

SkyWalking+若依上云与 Qwen3 本地 RAG 系统搭建实验报告

作业内容 - 31 - 微服务链路追踪 SkyWalking 和微服务 JAVA 项目若依上云 - 32 - 大模型部署与实践(01):按照课程完成大模型部署和相关实战 - 33 - 大模型部署与实践(续):高性能推理与简单应用实战 总要求…

2026/9/27 22:26:59

3个免费工具搞定wordpress花钱吗难题

3个免费工具搞定wordpress花钱吗难题 自己不会代码想做网站,是不是觉得必须得花大价钱找外包?其实,WordPress 本身是开源免费的,真正的成本往往藏在那些你没注意到的角落。很多创业团队负责人一听到“建站”就想到预算,生怕被坑。…

2026/9/27 22:26:59

菏泽网站建设电话咨询避坑指南:5000到5万到底差在哪

菏泽网站建设电话咨询避坑指南:5000到5万到底差在哪 模板网站看着像那么回事,一上线客户就骂娘,这钱花得冤不冤? 很多老板在菏泽找建站公司,第一句话往往是“做个官网”,第二句话就问“多少钱”。…

2026/9/27 22:26:59

建个网站费用怎么算?5条注意事项避坑指南

建个网站费用怎么算?5条注意事项避坑指南 找建站公司最怕什么?不是技术不行,而是报价单拿在手里心里没底,怕被坑高价。很多老板花了几万块建了个站,结果连搜索引擎都搜不到,钱白花了一大半。…

2026/9/27 22:21:58

告别丑模板!郴州新网手机版新2026最新实战指南

告别丑模板!郴州新网手机版新2026最新实战指南 做网站的都懂那种痛:花大价钱做的模板站,上线一看,丑得让人想哭,手机打开更是排版乱飞,客户点两下就跑了。这不是个例,90%的中小企业官网都死在“视觉廉价”和“移动端体验差”这两个坑里。…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑