当前位置: 首页 > news >正文

使用.NET 8构建高效的时间日期帮助类

使用.NET 8构建高效的时间日期帮助类

在现代Web应用程序中,处理日期和时间是一个常见的需求。无论是记录日志、生成报告还是进行数据分析,正确处理日期和时间对于确保数据的准确性和一致性至关重要。本文将详细介绍如何使用ASP.NET Core和C#构建一个高效的时间日期帮助类,并展示其使用方法。

技术栈

  • .NET 8: 提供强大的API开发框架。
  • C#: 用于编写高效的业务逻辑。

代码实现

DateTimeHelper

我们创建了一个名为DateTimeHelper的帮助类,它提供了多种日期时间相关的功能,包括格式化日期时间和调整查询时间范围。

1. 常量定义

首先,我们定义了一些常用的常量,用于表示不同的时间跨度,例如1天、7天、30天等。

namespace MES.Core.Helpers
{/// <summary>/// 日期时间帮助类,提供日期时间格式化及查询范围调整功能/// </summary>public class DateTimeHelper{/// <summary>/// 日期时间格式:yyyy-MM-dd HH:mm:ss/// </summary>public const string DateTimeFormat = @"yyyy-MM-dd HH:mm:ss";/// <summary>/// 1天的时间跨度/// </summary>public const int Day1 = 1;/// <summary>/// 7天的时间跨度/// </summary>public const int Day7 = 7;/// <summary>/// 15天的时间跨度/// </summary>public const int Day15 = 15;/// <summary>/// 30天的时间跨度/// </summary>public const int Day30 = 30;/// <summary>/// 60天的时间跨度/// </summary>public const int Day60 = 60;/// <summary>/// 90天的时间跨度/// </summary>public const int Day90 = 90;
2. 获取当前时间

GetThisDateTime方法用于获取当前时间并将其格式化为指定的格式。

        /// <summary>/// 获取当前时间并格式化为指定格式/// </summary>/// <returns>格式化后的当前时间</returns>public static DateTime GetThisDateTime(){return Convert.ToDateTime(DateTime.Now.ToString(DateTimeFormat));}
3. 调整查询时间范围

AdjustQueryRange方法根据提供的开始时间和结束时间调整查询范围,以确保查询结果在合理的范围内。

        /// <summary>/// 根据提供的开始时间和结束时间调整查询范围/// </summary>/// <param name="start_time">开始时间</param>/// <param name="end_time">结束时间</param>/// <param name="timeHorizon">时间范围,默认30天</param>/// <returns>包含调整后的开始和结束时间的元组</returns>public static Tuple<DateTime, DateTime> AdjustQueryRange(DateTime? start_time, DateTime? end_time, int timeHorizon = Day30){// 默认设置开始时间为当前时间减去指定时间范围(默认30天)DateTime startTime = DateTime.Now.AddDays(-(timeHorizon - 1));// 默认设置结束时间为当前时间加1天DateTime endTime = DateTime.Now.AddDays(1);// 如果仅提供了开始时间if (start_time != null && end_time == null){startTime = (DateTime)start_time;// 确保结束时间在开始时间之后且不超过指定时间范围if (startTime.AddDays(timeHorizon) < endTime) endTime = startTime.AddDays(timeHorizon);}// 如果仅提供了结束时间if (start_time == null && end_time != null){endTime = (DateTime)end_time;// 确保开始时间在结束时间之前且不超过指定时间范围if (endTime.AddDays(-timeHorizon) < startTime) startTime = endTime.AddDays(-timeHorizon);}// 如果提供了开始和结束时间if (start_time != null && end_time != null){startTime = (DateTime)start_time;endTime = (DateTime)end_time;// 确保结束时间在开始时间之后且不超过指定时间范围if (startTime.AddDays(timeHorizon) < endTime) endTime = startTime.AddDays(timeHorizon);}// 返回调整后的开始和结束时间return Tuple.Create(startTime, endTime);}}
}

调用示例

以下是如何调用AdjustQueryRange方法的示例:

// 定义开始时间和结束时间
DateTime? startTime = new DateTime(2023, 10, 1);
DateTime? endTime = null;// 调用方法调整时间范围
var (adjustStartTime, adjustEndTime) = DateTimeHelper.AdjustQueryRange(startTime, endTime, DateTimeHelper.Day30);Console.WriteLine($"Adjusted Start Time: {adjustStartTime}");
Console.WriteLine($"Adjusted End Time: {adjustEndTime}");

总结

通过上述步骤,我们实现了一个高效的时间日期帮助类,能够方便地格式化日期时间和调整查询时间范围。该类不仅提高了代码的可读性和维护性,还确保了日期时间处理的一致性和准确性。

希望这篇文章对你有所帮助!如果你有任何问题或建议,请在评论区留言,我会尽力解答。

相关文章:

使用.NET 8构建高效的时间日期帮助类

使用.NET 8构建高效的时间日期帮助类 在现代Web应用程序中&#xff0c;处理日期和时间是一个常见的需求。无论是记录日志、生成报告还是进行数据分析&#xff0c;正确处理日期和时间对于确保数据的准确性和一致性至关重要。本文将详细介绍如何使用ASP.NET Core和C#构建一个高效…...

学习std::is_base_of笔记

1、std::is_base_of简介 在现代 C 中&#xff0c;模板元编程&#xff08;Template Metaprogramming&#xff09;是一种非常强大的编程技巧&#xff0c;它让我们能够在编译期进行类型推导和约束。而 std::is_base_of 是一个重要的工具&#xff0c;可以用来检查一个类型是否是另…...

第 25 场 蓝桥月赛

3.过年【算法赛】 - 蓝桥云课 问题描述 蓝桥村的村民们正准备迎接新年。他们计划宰杀 N 头猪&#xff0c;以庆祝一整年的辛勤劳作和丰收。每头猪的初始位置位于下标 xi​&#xff0c;所有 xi​ 均为偶数&#xff0c;保证没有两头猪初始位置相同。 当猪意识到人类打算宰杀它们…...

【设计模式-行为型】访问者模式

一、什么是访问者模式 说起来访问者模式&#xff0c;其实很少用。我一直在思考该用什么样的例子把这个设计模式表述清晰&#xff0c;最近突然想到一个例子也许他就是访问者。港片有过很辉煌的年代&#xff0c;小的时候一直在看港片觉得拍的非常好&#xff0c;而且演员的演技也在…...

无人机微波图像传输数据链技术详解

无人机微波图像传输数据链技术是无人机通信系统中的关键组成部分&#xff0c;它确保了无人机与地面站之间高效、可靠的图像数据传输。以下是对该技术的详细解析&#xff1a; 一、技术原理 无人机微波图像传输数据链主要基于微波通信技术实现。在数据链路中&#xff0c;图像数…...

SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由

前言 在微服务架构中&#xff0c;API 网关是各个服务之间的入口点&#xff0c;承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理&#xff0c;通常需要通过中心化的配置管理系统来实现灵活的路由更新&#xff0c;而无需重启网关服务。Nacos 作为一个开源…...

【QT】 控件 -- 显示类

&#x1f525; 目录 [TOC]( &#x1f525; 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 &#x1f525; 1. 前言 之前我在上一篇文章【QT】…...

反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征&#xff0c;无法捕捉长距离相关性&#xff0c;限制了其有效性。最近的研究利用预训练语言模型的…...

CF 41A.Translation(Java实现)

题目分析 根据示例千言万语一句话&#xff0c;reverse 思路分析 将读取的值分ab&#xff0c;再将b.reverse和a比较&#xff0c;一样就YES 代码 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String …...

14【学历和能力哪个更重要】

这是很多学习的人有的一个疑问&#xff0c;并提出想让我发表下看法&#xff0c;前面一直没空&#xff0c;我刚好完结了一个项目&#xff0c;最近又有时间更新图文课程了&#xff0c;就展开来讲讲 主流的说法有2个 1&#xff1a;学历重要&#xff0c;依据是很多公司招聘都有学历…...

Learning Vue 读书笔记 Chapter 2

2. Vue 基本工作原理 2.1 Virtual DOM 概念&#xff1a; DOM: DOM以内存中树状数据结构的形式&#xff0c;代表了网页上的HTML&#xff08;或XML&#xff09;文档内容。它充当了一个编程接口&#xff0c;将网页与实际的编程代码&#xff08;如JavaScript&#xff09;连接起来…...

SpringBoot支持动态更新配置文件参数

前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1a;Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。 博主所有博客文件…...

开发技巧,vue 中的动态组件的引用 component + is

在项目中很多时候有切换 tab 的场景&#xff0c;一般来说都是用 v-if 或者 v-show 然后根据各种条件来控制显示隐藏。 其实我们可以使用 vue 中的动态组件&#xff0c;也能实现这个效果 <!-- currentTab 改变时组件也改变 --> <component :is"currentTab"…...

基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API

前言&#xff1a; 本片博客只讲述了操作的大致流程&#xff0c;具体实现步骤并不标准&#xff0c;请以参考为准。 本文前提&#xff1a;熟悉使用webSocket 如果大家还不了解什么是WebSocket&#xff0c;可以参考我的这篇博客&#xff1a; rWebSocket 详解&#xff1a;全双工…...

PSD是什么图像格式?如何把PSD转为JPG格式?

在图形设计的世界里&#xff0c;Photoshop 文档&#xff08;PSD&#xff09;格式是 Adobe Photoshop 的原生文件格式&#xff0c;它允许设计师保存图像中的图层、蒙版、透明度和不同色彩模式等信息。对于需要进一步编辑的设计作品来说&#xff0c;PSD 文件提供了极大的灵活性。…...

c语言中mysql_query的概念和使用案例

在 C 语言中&#xff0c;使用 MySQL 数据库需要用到 MySQL C API。mysql_query() 函数是 MySQL C API 中的一个函数&#xff0c;用于执行 SQL 语句。 概念 mysql_query() 函数的原型如下&#xff1a; int mysql_query(MYSQL *mysql, const char *stmt_str)mysql&#xff1a;…...

一次端口监听正常,tcpdump无法监听到指定端口报文问题分析

tcpdump命令&#xff1a; sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各个部分的详细解释&#xff1a; 1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。 2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡&#xff09;&#xff0c;即计算机该指定网络接口捕…...

解决InnoDB: Failing assertion: !lock->recursive

背景&#xff1a; 在arm服务器里运行MySQL5.7.22版本 报错信息 &#xff1a; 2024-11-25T08:07:36.24182508:00 856 [Note] Multi-threaded slave statistics for channel : seconds elapsed 126; events assigned 53431297; worker queues filled over overrun level 0; …...

基于微信小程序的外卖点餐系统设计与实现ssm+论文源码调试讲解

4系统概要设计 4.1概述 本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原…...

Helm Chart 实现 Kubernetes 应用的多环境部署与镜像更新

在现代软件开发中,通常需要将应用部署到多个环境(如开发环境、测试环境、生产环境),并且在不同环境中使用不同的配置和镜像版本。Helm Chart 提供了强大的模板化和参数化功能,可以轻松实现多环境部署和镜像更新。本文将详细介绍如何使用 Helm Chart 实现 Kubernetes 应用的…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...