首页/新闻资讯/正文详情

Humanizer 流式日期 API 详解:OnDate.September 类完整成员指南

发布时间:2026/9/27 10:43:07 来源:云帆数科 栏目:资讯中心
Humanizer 流式日期 API 详解:OnDate.September 类完整成员指南
开发工具【免费下载链接】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 项目中OnDate.September类为核心系统讲解其 30 个日期访问属性与The(int)工厂方法的签名、语义与源码实现并深入其 T4 代码生成机制与反射测试验证帮助读者在 .NET 6 项目中以强类型、免字符串的方式构造 9 月任意一天的DateOnly值。读完本文你将掌握 Humanizer FluentDate 家族中OnDateDateOnly版与OnDateTime版的区别、序数属性命名规律以及如何与At、AtMidnight、AtNoon等扩展方法组合出精确的时间点。一、类概览OnDate.September 是什么OnDate.September是 Humanizer 流式日期FluentDateAPI 中用于9 月的日期访问器提供以下能力public class OnDate.September类型层级嵌套于 OnDate 类 内部的公共静态类继承链为System.Object→September成员形态全部成员均为public static属性为只读getonly方法为静态工厂返回值类型System.DateOnly日期专用类型不含时间部分命名空间Humanizer可通过using Humanizer;直接使用平台前提DateOnly自 .NET 6 起可用因此OnDate系列仅在NET6_0_OR_GREATER条件下编译见下方源码条件编译部分。同类姊妹类On.September参见 On.September 类文档返回System.DateTime而OnDate.September返回DateOnly二者共同构成 Humanizer 流式日期 API 的双轨设计需要时间分量时用On仅关注日期时用OnDate。二、全部 30 个日期访问属性The1st The30thOnDate.September为 9 月的每一天1 日至 30 日各提供一个静态只读属性语义统一为当前年份的 9 月第 N 天。完整清单如下签名均为public static System.DateOnlygetonly属性含义属性含义The1st9 月 1 日The16th9 月 16 日The2nd9 月 2 日The17th9 月 17 日The3rd9 月 3 日The18th9 月 18 日The4th9 月 4 日The19th9 月 19 日The5th9 月 5 日The20th9 月 20 日The6th9 月 6 日The21st9 月 21 日The7th9 月 7 日The22nd9 月 22 日The8th9 月 8 日The23rd9 月 23 日The9th9 月 9 日The24th9 月 24 日The10th9 月 10 日The25th9 月 25 日The11th9 月 11 日The26th9 月 26 日The12th9 月 12 日The27th9 月 27 日The13th9 月 13 日The28th9 月 28 日The14th9 月 14 日The29th9 月 29 日The15th9 月 15 日The30th9 月 30 日示例假设当前年份为 2026using Humanizer; DateOnly first OnDate.September.The1st; // 2026-09-01 DateOnly mid OnDate.September.The15th; // 2026-09-15 DateOnly last OnDate.September.The30th; // 2026-09-30属性名采用英文序数后缀1st、2nd、3rd、21st、22nd、23rd与 Humanizer 的Ordinalize()扩展输出一致这也是属性命名规律的内在来源详见下文 T4 模板分析。三、动态工厂方法The(int dayNumber)除固定属性外OnDate.September还提供一个按参数取日的静态方法public static System.DateOnly The(int dayNumber);项目说明参数dayNumberSystem.Int32表示目标日期在 9 月中的日序号如 1 表示 9 月 1 日返回值System.DateOnly即当前年份的 9 月第 dayNumber 天适用场景日序号来自运行时变量如用户输入、循环、配置项时无需写 30 个 if 分支示例int day 12; DateOnly target OnDate.September.The(day); // 2026-09-12需要留意的是dayNumber的有效取值范围受 9 月实际天数约束平闰年均为 30 天。传入超出范围的值时底层new DateOnly(year, 9, dayNumber)会抛出ArgumentOutOfRangeException——该行为已被仓库测试显式捕获验证见本文第五部分。四、源码实现与 T4 代码生成机制4.1 手工生成的 September 类实现OnDate.September的实体定义位于 OnDate.Days.cs每个成员都是基于DateTime.Now.Year的极简一行表达式public class September { /// summary /// The nth day of September of the current year /// /summary public static DateOnly The(int dayNumber) new(DateTime.Now.Year, 9, dayNumber); /// summary /// The 1st day of September of the current year /// /summary public static DateOnly The1st new(DateTime.Now.Year, 9, 1); // …… The2nd The30th 同理 }由此可以确认两个实现事实年份取自系统当前时间属性与方法都使用DateTime.Now.Year因此返回值永远落在当年的 9 月跨年调用会得到新一年的日期不存在缓存或固定年份返回值是全新实例每次访问都通过new DateOnly(...)构造属性本质上是无副作用的纯函数。4.2 T4 模板12 个月、全部日期访问器如何批量生成OnDate.Days.cs这份 2336 行的文件并非全部手写而是由 T4 文本模板 OnDate.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); // 生成月份类名如 September // ... public static DateOnly The(int dayNumber) new(DateTime.Now.Year, # month #, dayNumber); for (var day 1; day DateTime.DaysInMonth(leapYear, month); day) { var ordinalDay day.Ordinalize(); // 1 → 1st、2 → 2nd、3 → 3rd…… public static DateOnly The# ordinalDay # new(DateTime.Now.Year, # month #, # day #); } }这段模板揭示了三个关键设计月份类名来自区域性月份名称模板以 2012 年闰年为基准用DateTime.ToString(MMMM)取得英文月份名September从而自动生成 12 个同名嵌套类属性后缀来自Ordinalize()day.Ordinalize()是 Humanizer 自带的序数化扩展输出1st/2nd/3rd/…这正是The1stThe30th命名的直接来源天数来自DateTime.DaysInMonth9 月在 2012 闰年为 30 天故生成 30 个属性若某月为 28/29 天2 月或 31 天如 10 月、12 月生成数量也会随之变化。因此本文表格中的30 个属性并非巧合而是模板按真实历法推算的必然结果。4.3 OnDate 与 OnDateOnly / DateTime 双轨对照OnDate系列OnDate.Days.cs整体以#if NET6_0_OR_GREATER包裹而对应的On系列On.Days.cs无此限制两者结构完全平行仅返回值类型不同// On返回 DateTime.NET Standard 2.0 均可用 public static DateTime The(int dayNumber) new(DateTime.Now.Year, 9, dayNumber); public static DateTime The1st new(DateTime.Now.Year, 9, 1); // OnDate返回 DateOnly仅 .NET 6 public static DateOnly The(int dayNumber) new(DateTime.Now.Year, 9, dayNumber); public static DateOnly The1st new(DateTime.Now.Year, 9, 1);选用原则目标框架为 .NET 6 及以上且业务只关心某年某月某日如生日、账单日、排期时OnDate.September的DateOnly更贴切需要同时携带时间或兼容旧框架时则用On.September。五、测试验证反射扫描保证 12 个月全覆盖仓库通过反射式测试确保所有月份的属性与方法是完整且正确的。相关测试位于 GeneratedFluentDateTests.csOnDateDayPropertiesCoverAllGeneratedDayAccessorsL46-L47遍历OnDate下全部 12 个月份嵌套类对每个以The开头的属性调用GetValue(null)再断言其Year/Month/Day与当前年份 月份序号 属性后缀日号完全一致OnDateTheMethodsCoverAllGeneratedMonthFactoriesL49-L51对每个月份类的The(int)方法反射调用参数为 1断言返回的DateOnly为当月 1 日月份映射表含(September, 9)条目见 L353辅助方法AssertMonthDayPropertiesL171-L193同时捕获TargetInvocationException并断言内部异常为ArgumentOutOfRangeException——这正是对The(dayNumber)越界参数行为的测试锚点TryParseDayPropertyL307-L316从属性名The15th中解析数字 15 并与返回日期比对进一步验证了属性名 ↔ 日期值的一一对应关系。六、实战组合从日期到具体时间点OnDate.September返回的DateOnly可与 Humanizer 的介词扩展PrepositionsExtensions.cs及OnDate的其他成员配合构建当年 9 月某日 具体时刻的完整语义。例如using Humanizer; // 当年 9 月 15 日的正午 DateOnly meetingDay OnDate.September.The15th; // 与 OnDate 其他月份类协同如 9 月最后一天与 10 月第一天 DateOnly sepEnd OnDate.September.The30th; DateOnly octStart OnDate.October.The1st;若需要在DateOnly之上补足时间分量可在 .NET 6 中使用DateOnly.ToDateTime(TimeOnly)或直接改用On.September.The15th再调用At(hour, min, second, millisecond)扩展DateTime meetingStart On.September.The15th.At(14, 30); // 当年 9 月 15 日 14:30 DateTime noonOnLastDay OnDate.September.The30th default ? default : On.September.The30th.AtNoon(); // 当年 9 月 30 日 12:00七、使用注意事项小结框架版本OnDate.September仅在NET6_0_OR_GREATER下编译并可用DateOnly依赖旧框架项目请使用On.September年份语义所有成员基于DateTime.Now.Year永远返回今年的 9 月日期无法直接指定任意年份——如需指定年份请改用In.SeptemberOf(year)DateTime版或自行对DateOnly做AddYears换算参数边界The(int dayNumber)超出 130 会抛出ArgumentOutOfRangeException调用前应校验输入不可变性属性每次访问都会构造新的DateOnly实例无共享可变状态可放心在并发场景使用API 文档对应关系本文对应的权威 API 参考页为 Humanizer.OnDate.September.md其姊妹类文档 Humanizer.OnDate.md 与 Humanizer.On.September.md 可一并查阅。综上OnDate.September以 30 个零参数的强类型属性覆盖了 9 月每一天配合动态The(int)方法与 Humanizer 的介词扩展能在不拼接字符串、不手写new DateOnly(year, 9, n)的情况下写出可读性极佳的日期构建代码其背后 T4 模板的历法推导与反射测试的全覆盖也为所有月份类结构一致、行为可靠提供了实现级保证。赞分享开发工具【免费下载链接】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 OnDate.September 详解用流式 API 构建 9 月日期DateOnlyHumanizer OnDate.September 详解用流式 API 构建 9 月日期DateOnly 本篇指南聚焦 Humanizer 的 OnDa开发工具Humanizer 流式日期 API 深度解析On.January 类全成员指南Humanizer 流式日期 API 深度解析On.January 类全成员指南 本文围绕 Humanizer 2.11.10 版本文档中的 On.Janua开发工具DeepEval 如何用 MMLU 基准测试自定义 LLM 并解释 overall_score 计分DeepEval 如何用 MMLU 基准测试自定义 LLM 并解释 overall_score 计分 如果你训练或微调了一个自定义 LLM想回答“它到底在通用开发工具上一篇终极指南BCompare_Keygen开源工具实现Beyond Compare 5.x永久激活的完整方案下一篇3分钟搞定BetterNCM安装器网易云音乐终极定制指南 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Transformer 大模型架构深度解析(6)Attention 和 FFN 模型结构的核心优化方向概览
Transformer 大模型架构深度解析(6)Attention 和 FFN 模型结构的核心优化方向概览

目录 文章目录目录Attention 优化方向Softmax AttentionSparse AttentionFlashAttentionPageAttentionRadixAttentionFFN 优化方向 —— MoEMoE 的诞生背景和思想Dense 与 MoE 的对比MoE 训练特点MoE 推理特点MoE FFN 的结构专家网络(Experts Network)门… · 2026/9/27 10:43:01

wordpress自定义结构404页面设计对比评测与实战指南
wordpress自定义结构404页面设计对比评测与实战指南

wordpress自定义结构404页面设计对比评测与实战指南 改个需求建站公司拖一周,最后甩过来一个默认报错页面?别气,这事儿太常见了。很多团队在 WordPress 站点上线前,花大量时间纠结导航菜单或配色,却忽略了 404… · 2026/9/27 10:43:01

wordpress设置不同分类的模板2026最新
wordpress设置不同分类的模板2026最新

拒绝套娃模板!2026最新WordPress设置不同分类模板实操指南 还在为首页全是千篇一律的方块布局头疼?很多新手装完WordPress,发现不管是新闻还是产品,页面长得一模一样,不仅看着廉价,用户也抓不住重点。这种“模板网站太丑不够用”… · 2026/9/27 10:42:30

网页版建站速查手册:告别模板丑,3步搞定企业官网
网页版建站速查手册:告别模板丑,3步搞定企业官网

网页版建站速查手册:告别模板丑,3步搞定企业官网 别再对着那个土得掉渣的模板网站发呆了,那玩意儿不仅丑,更致命的是它根本装不下你的业务逻辑。很多陕西的老板找我们做站,第一句话都是“这模板太丑,不够用”,其实你缺的不是换个皮,而是一套能落地、… · 2026/9/27 13:00:24

2026最新建设网站比较好:从被黑挂马到安全加固实战
2026最新建设网站比较好:从被黑挂马到安全加固实战

2026最新建设网站比较好:从被黑挂马到安全加固实战 你的网站昨天还正常,今天一打开全是赌博广告?后台密码改了还是进不去?数据库被拖得底裤都不剩?这种 网站被黑挂马不知道怎么办… · 2026/9/27 13:00:11

Claude Fable 5深度解析:Anthropic旗舰模型技术架构、自适应推理与全方位评测
Claude Fable 5深度解析:Anthropic旗舰模型技术架构、自适应推理与全方位评测

/* 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 13:00:05

政务网站开发协议怎么签?3个关键条款避坑指南
政务网站开发协议怎么签?3个关键条款避坑指南

政务网站开发协议怎么签?3个关键条款避坑指南 自己不会代码想做网站,最怕的不是没灵感,而是签了个“坑人”的协议,最后网站慢如蜗牛,改个按钮都要加钱。很多创业团队负责人第一次接触 政务网站开发协议 ,容易把重心全放在价格上,忽略了 性能优化… · 2026/9/27 13:00:05

AI工具全解析:从智能编码到模型训练的完整生态与TaoToken统一接入实践
AI工具全解析:从智能编码到模型训练的完整生态与TaoToken统一接入实践

/* 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 13:00:05

SLAM学习路线全攻略:从零搭建激光与视觉SLAM知识体系
SLAM学习路线全攻略:从零搭建激光与视觉SLAM知识体系

1. 从零开始搭建SLAM学习路线:一个过来人的完整笔记SLAM这个词,如果你刚接触机器人或者自动驾驶领域,大概率已经被它反复轰炸过了。全称Simultaneous Localization and Mapping,中文叫同步定位与建图。说白了就是一台机器在一个完… · 2026/9/27 12:59:59

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码