当前位置: 首页 > 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}");

总结

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

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

http://www.lryc.cn/news/526954.html

相关文章:

  • 学习std::is_base_of笔记
  • 第 25 场 蓝桥月赛
  • 【设计模式-行为型】访问者模式
  • 无人机微波图像传输数据链技术详解
  • SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由
  • 【QT】 控件 -- 显示类
  • 反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期
  • CF 41A.Translation(Java实现)
  • 14【学历和能力哪个更重要】
  • Learning Vue 读书笔记 Chapter 2
  • SpringBoot支持动态更新配置文件参数
  • 开发技巧,vue 中的动态组件的引用 component + is
  • 基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API
  • PSD是什么图像格式?如何把PSD转为JPG格式?
  • c语言中mysql_query的概念和使用案例
  • 一次端口监听正常,tcpdump无法监听到指定端口报文问题分析
  • 解决InnoDB: Failing assertion: !lock->recursive
  • 基于微信小程序的外卖点餐系统设计与实现ssm+论文源码调试讲解
  • Helm Chart 实现 Kubernetes 应用的多环境部署与镜像更新
  • “腾讯、钉钉、飞书” 会议开源平替,免费功能强大
  • 我谈区域偏心率
  • 思科交换机telnet配置案例
  • 机器学习:支持向量机
  • 人工智能前沿技术进展与应用前景探究
  • (一)HTTP协议 :请求与响应
  • 什么是网络爬虫?Python爬虫到底怎么学?
  • NR_shell运行流程简析
  • CSS Fonts(字体)
  • 基于Django的Boss直聘IT岗位可视化分析系统的设计与实现
  • linux系统中的 scp的使用方法