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

Humanizer 流式日期 API 详解:InDate.Ten 实现 10 天/周/月/年的 DateOnly 日期计算

发布时间:2026/9/27 9:55:27 来源:云帆数科 栏目:资讯中心
Humanizer 流式日期 API 详解:InDate.Ten 实现 10 天/周/月/年的 DateOnly 日期计算
开发工具【免费下载链接】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 的InDate系列是面向System.DateOnly的流式Fluent日期构造 API其中InDate.Ten静态嵌套类专门封装从现在起 10 天、10 周、10 个月、10 年之后的日期取值以及基于任意基准日期的相对计算。本文以 2.14.1 版本的 Humanizer.InDate.Ten API 文档 为主体结合仓库源码与测试用例完整讲解该类 4 个属性、8 个方法的签名、行为、实现原理与实战用法读完即可在 .NET 6 项目中安全使用InDate.Ten进行日期推算。InDate.Ten 在 Humanizer 流式日期体系中的位置Humanizer 的 FluentDate 模块位于 src/Humanizer/FluentDate 目录提供两组平行的流式日期 APIIn类基于System.DateTime的流式日期秒、分、时、天、周、月、年实现于 In.SomeTimeFrom.csInDate类基于System.DateOnly的流式日期天、周、月、年实现于 InDate.SomeTimeFrom.cs与之配套的还有月份构造InDate.January/JanuaryOf(year)等见 InDate.Months.cs以及InDate.TheYear(year)见 InDate.cs。InDate.Ten就是InDate中数量为 10 的嵌套静态类与InDate.One到InDate.Nine组成完整的 110 数字序列。需要说明的是DateOnly自 .NET 6 起才引入因此整个InDate系列源码都以#if NET6_0_OR_GREATER条件编译保护仅在兼容的目标框架.NET 6.0 及以上上可用按官方版本说明DateOnly流式辅助 API 自 2.11.10 版本起提供见 fluent-dates-and-time-spans 场景指南。类型声明与继承关系InDate.Ten的完整声明如下public static class InDate.Ten它是一个静态类所有成员均为静态成员可直接通过InDate.Ten.Days等方式调用无需实例化它继承自System.Object没有额外基类它嵌套在public partial class InDate内部partial使多个源文件可以共同构成该类。属性成员从现在起 10 个单位之后的日期InDate.Ten提供 4 个只读静态属性语义统一为从现在起 N 个单位之后全部返回System.DateOnly属性说明返回类型Days从现在起 10 天之后System.DateOnlyWeeks从现在起 10 周之后System.DateOnlyMonths从现在起 10 个月之后System.DateOnlyYears从现在起 10 年之后System.DateOnly对应声明节选自 Humanizer.InDate.Ten.mdpublic 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 的Ten类源码可以看到这些属性并非简单的今天 10public static class Ten { // 10 days from now public static DateOnly Days DateOnly.FromDateTime(DateTime.UtcNow.AddDays(10)); // 10 weeks from now public static DateOnly Weeks DateOnly.FromDateTime(DateTime.UtcNow.AddDays(70)); // 10 months from now public static DateOnly Months DateOnly.FromDateTime(DateTime.UtcNow.AddMonths(10)); // 10 years from now public static DateOnly Years DateOnly.FromDateTime(DateTime.UtcNow.AddYears(10)); }可以总结出三个关键实现事实基准时间是 UTC属性基于DateTime.UtcNow计算再通过DateOnly.FromDateTime转换为只含年、月、日的DateOnly周是天数的倍数Weeks实现为AddDays(70)10 × 7而不是单独的周单位周的定义严格等于 7 天月/年走日历运算Months与Years分别委托给AddMonths(10)与AddYears(10)属于日历粒度的日期运算见场景指南对 InDate API 中 Calendar arithmetic 的说明而不是按固定天数估算。注意属性取值依赖现在不适合确定性代码由于Days/Weeks/Months/Years内部读取DateTime.UtcNow每次调用结果都会随当前时间漂移。场景指南的 Pitfall 小节明确提醒不带From或Of(year)后缀的属性在代码或测试中可能破坏可重复性需要确定性结果时应改用下面介绍的XxxFrom(date)方法注入基准日期。方法成员基于指定基准日期的相对计算InDate.Ten提供 8 个静态方法覆盖 4 个时间单位 × 2 种基准日期类型DateOnly与DateTime全部返回DateOnly方法说明参数返回类型DaysFrom(DateOnly date)从指定日期起 10 天之后System.DateOnlySystem.DateOnlyDaysFrom(DateTime date)从指定日期起 10 天之后System.DateTimeSystem.DateOnlyWeeksFrom(DateOnly date)从指定日期起 10 周之后System.DateOnlySystem.DateOnlyWeeksFrom(DateTime date)从指定日期起 10 周之后System.DateTimeSystem.DateOnlyMonthsFrom(DateOnly date)从指定日期起 10 个月之后System.DateOnlySystem.DateOnlyMonthsFrom(DateTime date)从指定日期起 10 个月之后System.DateTimeSystem.DateOnlyYearsFrom(DateOnly date)从指定日期起 10 年之后System.DateOnlySystem.DateOnlyYearsFrom(DateTime date)从指定日期起 10 年之后System.DateTimeSystem.DateOnly对应声明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);方法成员的底层实现源码中每个单位的方法都成对出现——DateOnly重载直接调用DateOnly的加法扩展DateTime重载则先对DateTime做加法、再DateOnly.FromDateTime裁剪掉时间部分// 10 days from the provided date public static DateOnly DaysFrom(DateOnly date) date.AddDays(10); public static DateOnly DaysFrom(DateTime date) DateOnly.FromDateTime(date.AddDays(10)); // 10 weeks from the provided date public static DateOnly WeeksFrom(DateOnly date) date.AddDays(70); public static DateOnly WeeksFrom(DateTime date) DateOnly.FromDateTime(date.AddDays(70)); // 10 months from the provided date public static DateOnly MonthsFrom(DateOnly date) date.AddMonths(10); public static DateOnly MonthsFrom(DateTime date) DateOnly.FromDateTime(date.AddMonths(10)); // 10 years from the provided date public static DateOnly YearsFrom(DateOnly date) date.AddYears(10); public static DateOnly YearsFrom(DateTime date) DateOnly.FromDateTime(date.AddYears(10));两点值得注意DateTime重载会丢弃时间分量例如InDate.Ten.DaysFrom(new DateTime(2025, 1, 1, 23, 59, 59))返回2025-01-11的DateOnly时间部分被FromDateTime舍去月/年的月末归一化行为MonthsFrom与YearsFrom继承AddMonths/AddYears的归一化规则例如从 2 月 29 日闰年起加 10 个月目标是非闰年的 12 月时结果会被归一化为 12 月 28 日。场景指南的 Pitfall 对此有明确说明如果业务需要保持同月同日、不存在则抛异常的严格语义则应使用date.In(year)之类的重构构造方式属于PrepositionsExtensions的范畴见 PrepositionsExtensions API。这些成员是如何生成出来的T4 模板InDate.Ten及OneNine并非手工逐个编写而是由一个 T4 模板 InDate.SomeTimeFrom.tt 生成的。模板的核心逻辑为for (var i 1; i 10; i) { var plural i 1 ? s : ; // 类名i.ToWords().Dehumanize() // Day/Week/Month/Year 按单复数命名如 One.Day 与 Ten.Days }也就是说循环从 1 到 10为每个数字生成一个静态嵌套类One、Two…Ten数量为 1 时成员名使用单数如InDate.One.Day数量大于 1 时使用复数如InDate.Ten.Days类名通过i.ToWords().Dehumanize()生成把数字转换成英文单词后再反人化dehumanize为 PascalCase 标识符每个类都包含从现在起属性与From方法两套成员与InDate.Ten完全同构。因此本文介绍的全部 12 个成员4 属性 8 方法在InDate.OneInDate.Nine中均有对应形态理解Ten就等于理解了整个数字序列InDateTime版本由 In.SomeTimeFrom.tt 以同样的方式生成且In序列还额外包含秒、分、时三个单位见 In.SomeTimeFrom.cs。实战用法与测试佐证完整可运行的示例using Humanizer; // 属性以当前 UTC 时间为基准 DateOnly in10Days InDate.Ten.Days; // UtcNow 10 天 DateOnly in10Weeks InDate.Ten.Weeks; // UtcNow 70 天 DateOnly in10Months InDate.Ten.Months; // UtcNow 10 个月 DateOnly in10Years InDate.Ten.Years; // UtcNow 10 年 // 方法以固定日期为基准适合确定性代码与测试 DateOnly baseDate new(2025, 1, 1); DateOnly fromDateOnly InDate.Ten.DaysFrom(baseDate); // 2025-01-11 DateOnly fromDateTime InDate.Ten.WeeksFrom(new DateTime(2025, 1, 1)); // 2025-03-12 DateOnly months InDate.Ten.MonthsFrom(baseDate); // 2025-11-01 DateOnly years InDate.Ten.YearsFrom(baseDate); // 2035-01-01与月份构造类组合使用InDate.Ten的方法重载接受DateOnly因此可以很方便地与InDate的月份构造器链式组合。例如结合 InDate.Months.cs 中的InDate.JanuaryOf(2025)DateOnly anniversaryPlus10Months InDate.Ten.MonthsFrom(InDate.JanuaryOf(2025)); // 2025-11-01仓库测试验证仓库中的 InDateTests.cs 对InDate系列做了单元验证其中InFiveDays用例展示了方法重载的预期语义[Fact] public void InFiveDays() { var baseDate OnDate.January.The21st; var date InDate.Five.DaysFrom(baseDate); Assert.Equal(baseDate.AddDays(5), date); }同一测试文件还验证了InDate.January、InDate.JanuaryOf(2009)、InDate.TheYear(2009)等属性/方法的行为。InDate.Ten与InDate.Five由同一 T4 模板生成、实现同构因此上述断言模式可直接套用于InDate.Ten.DaysFrom(...)。使用注意事项小结关注点说明目标框架InDate及InDate.Ten仅存在于#if NET6_0_OR_GREATER编译分支需 .NET 6.0版本要求DateOnly流式辅助自 2.11.10 起提供本文基于 2.14.1 文档版本属性基准时间Days/Weeks/Months/Years基于DateTime.UtcNow随时间漂移不宜用于确定性代码方法基准时间XxxFrom(date)接受调用方注入的基准日期可重复、可测试推荐优先使用周的定义Weeks/WeeksFrom实现为 7 天倍数并非独立单位月/年语义委托AddMonths/AddYears存在月末归一化如 2 月 29 日 → 2 月 28 日时间裁剪所有成员最终都返回DateOnlyDateTime重载会丢弃时分秒进一步阅读类总览InDate API2.14.1 与 In API2.14.1同级数字类InDate.One至InDate.NineAPI 目录website/versioned_docs/version-2.14.1/api实战场景Compose dates and time spans fluently2.14.1源码与测试InDate.SomeTimeFrom.cs、InDate.SomeTimeFrom.tt、InDateTests.cs赞分享开发工具【免费下载链接】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 InDate.Ten 详解用 DateOnly 流式 API 计算 10 天/周/月/年后的日期Humanizer InDate.Ten 详解用 DateOnly 流式 API 计算 10 天/周/月/年后的日期 InDate.Ten 是 Humaniz开发工具Humanizer 流式日期 API 详解InDate.Ten 的 10 天 / 周 / 月 / 年日期计算Humanizer 流式日期 API 详解InDate.Ten 的 10 天 / 周 / 月 / 年日期计算 本篇技术指南聚焦 Humanizer 流式日期开发工具Tesla Dashcam3 步快速完整合并行车记录视频Tesla Dashcam3 步快速完整合并行车记录视频 特斯拉行车记录仪每次记录事件后会在 U 盘 TeslaCam 文件夹里留下数十个按摄像头、按分钟切开发工具上一篇15分钟搞定黑苹果EFI配置OpCore Simplify终极指南下一篇如何在5分钟内搭建专属视频门户MediaCMS开源视频管理系统完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

网站建设期末作业选哪家技术栈最稳?不会代码也能拿高分
网站建设期末作业选哪家技术栈最稳?不会代码也能拿高分

网站建设期末作业选哪家技术栈最稳?不会代码也能拿高分 自己完全不懂代码,却被老师甩了个“独立开发响应式网站”的期末作业,是不是瞬间头皮发麻?这种时候别急着哭,也别盲目去搜“网站建设哪家好”,因为对于学生党来说,市面上那些动辄几千块的企业级方… · 2026/9/27 9:55:14

PX4 DebugArray UORB 消息详解:从字段定义到 Mavlink 调试链路实战
PX4 DebugArray UORB 消息详解:从字段定义到 Mavlink 调试链路实战

嵌入式物联网机器人自动驾驶智能硬件 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 点击查看 免费下载 PX4 的 debug_array 是一类专用于批量浮点调试数据的 UORB 主题,允许开发者… · 2026/9/27 9:55:02

APScheduler 版本迁移指南:从 v1/v2/v3 全面升级到 v4.0 的架构变化与实践要点
APScheduler 版本迁移指南:从 v1/v2/v3 全面升级到 v4.0 的架构变化与实践要点

任务调度后端 【免费下载链接】apscheduler Task scheduling library for Python 项目地址: https://gitcode.com/gh_mirrors/ap/apscheduler 点击查看 免费下载 导读 本文以官方迁移文档 docs/migration.rst 为主线,系统梳理 APScheduler(… · 2026/9/27 9:55:02

视频加标题字幕 API 接口文档
视频加标题字幕 API 接口文档

视频加标题字幕 API 接口文档接口基本信息 接口名称:视频加标题字幕 API 接口描述:为视频添加标题和字幕,支持自定义标题样式、字幕位置、字体、颜色等参数,适用于口播视频、微课视频、演讲解说视频等场景 上线日期:20… · 2026/9/27 10:45:29

jose 非对称密钥对生成结果详解:GenerateKeyPairResult 接口与 generateKeyPair 实战指南
jose 非对称密钥对生成结果详解:GenerateKeyPairResult 接口与 generateKeyPair 实战指南

网络安全认证鉴权后端 【免费下载链接】jose JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes 项目地址: https://gitcode.com/gh_mirrors/jo/jose 点击查看 免费下载 本指南围绕 jose… · 2026/9/27 10:45:17

济南手机网站开发保姆级建站教程拒绝拖一周
济南手机网站开发保姆级建站教程拒绝拖一周

济南手机网站开发保姆级建站教程拒绝拖一周 改个需求建站公司拖一周,这种憋屈感做业务的都懂。别急,今天这篇济南手机网站开发保姆级建站教程,直接给你拆解从设计到代码的完整链路,让你自己也能把控节奏,不再被外包牵着鼻子走。… · 2026/9/27 10:45:10

TVA具身智能系统(3):从设备编程到智能载体的产业认知重构
TVA具身智能系统(3):从设备编程到智能载体的产业认知重构

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&… · 2026/9/27 10:45:10

3招搞定Wordpress图片加载优化,免费工具实测有效
3招搞定Wordpress图片加载优化,免费工具实测有效

3招搞定Wordpress图片加载优化,免费工具实测有效 很多站长盯着后台看数据,发现首页加载慢得像蜗牛,一查原因,全是图片在拖后腿。其实不用死磕复杂的服务器配置,只要用对免费工具,配合简单的WordPress设置,图片加载速度能瞬间起飞。… · 2026/9/27 10:45:04

RT-Thread 在 STM32F410-Nucleo-64 开发板上的 BSP 实战指南:硬件资源、快速上手与驱动配置
RT-Thread 在 STM32F410-Nucleo-64 开发板上的 BSP 实战指南:硬件资源、快速上手与驱动配置

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 本文以 … · 2026/9/27 10:44:46

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

了解更多?预约专属演示

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

企业微信二维码