新闻详情

新闻详情

首页 / 资讯中心 / 详情

Humanizer `In.Seven` 静态类完全指南:用流式日期 API 表达“从现在起 7 天后“的日期

发布时间:2026/11/15 7:52:43来源:尧图网络
Humanizer `In.Seven` 静态类完全指南:用流式日期 API 表达“从现在起 7 天后“的日期
开发工具【免费下载链接】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点击查看免费下载In.Seven是 Humanizer FluentDate 系列 API 中负责7 个时间单位语义的静态嵌套类提供In.Seven.Days、In.Seven.Months这类属性以及In.Seven.DaysFrom(date)这类方法让开发者用近乎自然语言的语法表达相对日期计算。阅读本文后你将掌握该类的全部属性与方法签名、其基于 UTC 的实现细节、T4 模板生成机制以及如何结合测试用例验证结果从而在业务代码中安全地使用这类流式日期 API。In.Seven在 FluentDate API 中的定位Humanizer 的 FluentDate 命名空间围绕In、On两个静态类组织了一批可朗读的日期构造 API。其中In类承担两类职责详见 In.cs 与 In.SomeTimeFrom.cs月份工厂In.January、In.MarchOf(2025)等返回指定月份 1 号由 In.Months.tt 生成相对时间工厂In.OneIn.Ten十个嵌套静态类每个类都提供秒、分钟、小时、天、周、月、年七种单位的相对日期计算In.Seven即其中量词为 7的那一个。从 API 文档 Humanizer.In.Seven.md 的定义看In.Seven是一个public static class继承关系为System.Object → Seven。它没有构造函数与实例成员全部成员均为静态属性或静态方法因此可以直接以In.Seven.xxx形式调用无需实例化。属性成员从现在起 N 个时间单位In.Seven提供七个只读属性每个属性表示从当前时刻UTC起向后推移 7 个对应单位的DateTime。完整清单如下属性类型语义实现表达式SecondsDateTime7 秒后DateTime.UtcNow.AddSeconds(7)MinutesDateTime7 分钟后DateTime.UtcNow.AddMinutes(7)HoursDateTime7 小时后DateTime.UtcNow.AddHours(7)DaysDateTime7 天后DateTime.UtcNow.AddDays(7)WeeksDateTime7 周后49 天DateTime.UtcNow.AddDays(49)MonthsDateTime7 个月后DateTime.UtcNow.AddMonths(7)YearsDateTime7 年后DateTime.UtcNow.AddYears(7)这一结构与 In.SomeTimeFrom.cs 中Seven类的实现完全一致属性通过表达式主体expression-bodied直接返回DateTime.UtcNow的加法结果。值得注意的实现细节有两点基准是 UTC 而非本地时间。所有属性都基于DateTime.UtcNow计算这意味着在同一时刻、不同时区的机器上调用In.Seven.Days得到的是同一个 UTC 时间点而不是各机器本地时间各自加 7 天。如果你的业务需要本地时区的 7 天后需要自行转换In.Seven.Days.ToLocalTime()。每次访问都重新求值。由于属性是方法表达式In.Seven.Days在每次读取时都会重新计算DateTime.UtcNow。如果你先取一次、再取一次两次结果会相差若干毫秒而不是相差 7 天。需要固定基准时应先缓存一次调用结果例如var deadline In.Seven.Days; // 只读一次并缓存 Console.WriteLine($7 天后UTC{deadline:yyyy-MM-dd HH:mm:ss});方法成员从指定日期起 N 个时间单位In.Seven还提供七个同名 From后缀的静态方法用于以传入日期为基准的相对计算。它们全部接收一个System.DateTime参数date返回System.DateTime方法签名实现表达式SecondsFromstatic DateTime SecondsFrom(DateTime date)date.AddSeconds(7)MinutesFromstatic DateTime MinutesFrom(DateTime date)date.AddMinutes(7)HoursFromstatic DateTime HoursFrom(DateTime date)date.AddHours(7)DaysFromstatic DateTime DaysFrom(DateTime date)date.AddDays(7)WeeksFromstatic DateTime WeeksFrom(DateTime date)date.AddDays(49)MonthsFromstatic DateTime MonthsFrom(DateTime date)date.AddMonths(7)YearsFromstatic DateTime YearsFrom(DateTime date)date.AddYears(7)这些方法不依赖当前时刻结果完全由入参决定因此具有可预测性与可测试性。典型用法var start new DateTime(2025, 6, 1, 12, 0, 0, DateTimeKind.Utc); var inSevenMonths In.Seven.MonthsFrom(start); // 2026-01-01 12:00:00 UTC var inSevenWeeks In.Seven.WeeksFrom(start); // 2025-07-20 12:00:00 UTC测试代码 InTests.cs 也展示了这一模式先通过On.January.The21st构造基准日期再调用In.Five.DaysFrom(baseDate)并断言结果等于baseDate.AddDays(5)——同样的断言逻辑对In.Seven的七个From方法完全适用。源码级原理T4 模板如何生成 110 的全部量词In.Seven并非手写代码而是由 T4 文本模板 In.SomeTimeFrom.tt 批量生成。模板核心是一个for (var i 1; i 10; i)循环循环变量i即时间单位数量范围 110通过i.ToWords().Dehumanize()把数字转为单词再反人类化从而得到One、Two、…、Ten的嵌套类名属性/方法名的复数化规则为i 1 ? s : 因此One类里是单数形式Second、Minute见 In.SomeTimeFrom.cs而Seven等 210 的类里统一是复数形式Seconds、Minutes周的换算统一为AddDays(i * 7)所以Seven.Weeks实际是AddDays(49)生成代码后经编译得到最终的In.OneIn.Ten十个公开嵌套类。这意味着文档 Humanizer.In.Seven.md 中列出的 7 个属性与 7 个方法只是这套生成体系在量词 7上的实例如果你理解了Seven那么In.Five、In.Ten等其余九个类的成员形态完全同构。面向 .NET 6 的DateOnly变体InDate.Seven从源码结构看InDate.SomeTimeFrom.cs 提供了仅针对DateOnly的同构 API文件以#if NET6_0_OR_GREATER编译即只在 .NET 6 及以上目标框架生效。InDate.Seven与In.Seven的区别在于属性返回DateOnly且只覆盖天、周、月、年四种单位DateOnly没有秒、分钟、小时粒度实现上通过DateOnly.FromDateTime(DateTime.UtcNow.AddDays(49))等表达式完成From方法存在两个重载From(DateOnly date)与From(DateTime date)后者先对DateTime做加法再转成DateOnly方便同时兼容两种调用方式。因此如果你的项目面向 .NET 6 且只需要日期而无需时刻可以优先考虑InDate系列例如InDate.Seven.Days表示7 天后的日期。测试验证反射式全量校验保证生成代码正确Humanizer 对这套生成式 API 提供了系统性的测试保障集中在 GeneratedFluentDateTests.csInRelativeDatePropertiesReturnExpectedUtcOffsets通过反射遍历In的所有嵌套量词类型OneTen对每个属性在调用前后分别取DateTime.UtcNow作上下界断言属性返回值落在基准 对应单位数量的合理区间内InRelativeDateMethodsReturnExpectedOffsetsFromProvidedDate以固定日期2024-02-29 10:20:30 UTC为入参逐一断言每个From方法的返回与Add(date, amount, unit)精确相等测试中的RelativeAmounts字典显式登记[Seven] 7GeneratedFluentDateTests.csRelativeDateUnit枚举覆盖Second/Minute/Hour/Day/Week/Month/Year与In.Seven的七个成员一一对应。这套反射测试的意义在于由于In.OneIn.Ten全部由模板生成只要模板改动测试就能自动覆盖全部量词与全部单位In.Seven的正确性也随之得到持续保障。若你想亲手验证可运行dotnet test tests/Humanizer.Tests/Humanizer.Tests.csproj --filter FullyQualifiedName~GeneratedFluentDateTests。实战要点与注意事项语义即文档In.Seven.Days比DateTime.UtcNow.AddDays(7)更接近业务语言的表达适合用在到期时间、任务调度、订阅周期等场景例如var reminderAt In.Seven.DaysFrom(createdAt);。时区约定属性基于 UTC需要本地时间时显式转换避免隐式依赖运行环境时区。一次性求值属性是动态求值表达式多次读取结果不同务必先赋值给局部变量。基准可预测From方法不依赖时钟适合单元测试与可复现计算测试套件也以固定日期做精确断言。范围有限FluentDate 的In系列只覆盖 110 的量词超过 10 时仍使用DateTime.AddDays/AddMonths等原生方法或In.TheYear等工厂见 In.cs。总而言之In.Seven是 Humanizer FluentDate 生成体系中量词 7的标准实现其 7 属性 7 方法的成员形态、UTC 基准与 T4 生成机制构成了理解整套In.OneIn.TenAPI 的钥匙。结合 Humanizer.In.Seven.md 的签名文档与 GeneratedFluentDateTests.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 流式日期 API 详解In.Seven「从现在起 7 天/小时」全接口参考与生成机制Humanizer 流式日期 API 详解In.Seven「从现在起 7 天/小时」全接口参考与生成机制 本篇技术指南以 Humanizer 2.13.14开发工具Humanizer InDate.Three 指南用流式日期 API 计算从现在起 3 天 / 周 / 月 / 年的日期Humanizer InDate.Three 指南用流式日期 API 计算从现在起 3 天 / 周 / 月 / 年的日期 Humanizer 的 InDa开发工具Humanizer OnDate.July以静态属性表达「今年 7 月某一天」的流式日期 API 全解Humanizer OnDate.July以静态属性表达「今年 7 月某一天」的流式日期 API 全解 Humanizer.OnDate.July 是 Hum开发工具上一篇Nuke自定义任务调度实现复杂的图片加载依赖关系下一篇终极指南Amazon Bedrock Workshop开发工具链——SDK与CLI命令行高效使用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉