C#开发——时间间隔类TimSpan

embedded/2025/3/4 23:42:35/

        TimeSpan   是 C# 中的一个结构(  struct  ),用于表示时间间隔或持续时间。它位于   System   命名空间中,是处理时间相关操作时非常重要的工具,尤其是在计算两个日期或时间之间的差值、表示时间段或执行时间相关的运算时。

一、TimeSpan 的主要用途

        TimeSpan   可以表示从负数到正数的时间间隔,范围从   -10675199 天、2 小时、48 分钟和 5.4775808 秒   到   10675199 天、2 小时、48 分钟和 5.4775807 秒  。它通常用于以下场景:

  • 计算两个日期或时间的差值:通过减法运算符或   TimeSpan   构造函数。
  • 表示持续时间:例如,任务的执行时间、事件的持续时间等。
  • 时间的加减运算:与   DateTime   结合使用,对日期或时间进行加减操作。

二、TimeSpan 的构造和初始化

TimeSpan   提供了多种构造方式,用于创建表示时间间隔的对象。

1、常用的构造函数:

// 通过天、小时、分钟、秒来构造 TimeSpan
TimeSpan ts1 = new TimeSpan(1, 2, 30, 45); // 表示 1 天 2 小时 30 分钟 45 秒// 通过总秒数构造 TimeSpan
TimeSpan ts2 = TimeSpan.FromSeconds(3600); // 表示 1 小时// 通过总分钟数构造 TimeSpan
TimeSpan ts3 = TimeSpan.FromMinutes(90); // 表示 1 小时 30 分钟// 通过总天数构造 TimeSpan
TimeSpan ts4 = TimeSpan.FromDays(1.5); // 表示 1 天 12 小时

2、从字符串中解析:

TimeSpan ts5 = TimeSpan.Parse("01:02:30"); // 表示 1 小时 2 分钟 30 秒
TimeSpan ts6 = TimeSpan.ParseExact("01:02:30", @"hh\:mm\:ss", null); // 使用自定义格式解析

三、TimeSpan 的属性

TimeSpan   提供了一些只读属性,用于获取时间间隔的各个组成部分:

  1. Days  :时间间隔中的天数部分。
  2. Hours  :时间间隔中的小时部分。
  3. Minutes  :时间间隔中的分钟部分。
  4. Seconds  :时间间隔中的秒部分。
  5. Milliseconds  :时间间隔中的毫秒部分。
  6. Ticks  :时间间隔的刻度(1 tick = 100 纳秒)。
  7. TotalDays  :时间间隔的总天数(包括小数部分)。
  8. TotalHours  :时间间隔的总小时数(包括小数部分)。
  9. TotalMinutes  :时间间隔的总分钟数(包括小数部分)。
  10. TotalSeconds  :时间间隔的总秒数(包括小数部分)。

实例代码:

TimeSpan ts = new TimeSpan(1, 2, 30, 45);
//输出时间间隔的天数、小时、分钟、秒
Console.WriteLine($"Days: {ts.Days}, Hours: {ts.Hours}, Minutes: {ts.Minutes}, Seconds: {ts.Seconds}");
//输出时间间隔的总秒数
Console.WriteLine($"Total Seconds: {ts.TotalSeconds}");

四、TimeSpan 的运算

TimeSpan   支持加法、减法和比较运算,可以方便地进行时间间隔的计算:

1、加法和减法

TimeSpan ts1 = new TimeSpan(1, 0, 0);     // 1 天
TimeSpan ts2 = new TimeSpan(0, 2, 0);     // 2 小时
TimeSpan result = ts1 + ts2;     // 结果为 1 天 2 小时
TimeSpan difference = ts1 - ts2;     // 结果为 0 天 22 小时

2、比较

TimeSpan ts1 = new TimeSpan(1, 0, 0);
TimeSpan ts2 = new TimeSpan(0, 24, 0);if (ts1 == ts2)
{Console.WriteLine("ts1 和 ts2 相等");
}
else
{Console.WriteLine("ts1 和 ts2 不相等");
}

五、TimeSpan 与 DateTime 的结合

TimeSpan 常常与 DateTime 结合使用,用于对日期或时间进行加减操作:

DateTime now = DateTime.Now;
TimeSpan duration = new TimeSpan(1, 2, 30, 0); // 1 天 2 小时 30 分钟
DateTime future = now + duration; // 当前时间加上时间间隔
DateTime past = now - duration; // 当前时间减去时间间隔

六、TimeSpan 的格式化

TimeSpan   提供了多种格式化选项,用于将时间间隔转换为字符串:

标准格式化

TimeSpan ts = new TimeSpan(1, 2, 30, 45);
Console.WriteLine(ts.ToString()); // 输出:1.02:30:45
Console.WriteLine(ts.ToString("g")); // 输出:1.02:30:45(通用格式)
Console.WriteLine(ts.ToString("c")); // 输出:1.02:30:45.0000000(完整格式)

自定义格式化

Console.WriteLine(ts.ToString(@"dd\.hh\:mm\:ss")); // 输出:01.02:30:45
Console.WriteLine(ts.ToString(@"hh\:mm\:ss")); // 输出:02:30:45

七、总结

TimeSpan   是 C# 中用于表示时间间隔的结构,具有以下特点:

  • 提供多种构造方式,支持从天、小时、分钟、秒或总秒数等初始化。
  • 提供丰富的属性,用于获取时间间隔的各个组成部分。
  • 支持加法、减法和比较运算,方便进行时间间隔的计算。
  • 可以与   DateTime   结合使用,对日期或时间进行加减操作。
  • 提供多种格式化选项,方便将时间间隔转换为字符串。

通过合理使用   TimeSpan  ,可以方便地处理时间相关的计算和操作,是 C# 中处理时间问题的重要工具之一。


http://www.ppmy.cn/embedded/170033.html

相关文章

深搜专题6:迷宫问题

描述 设有一个N*N方格的迷宫,入口和出口分别在左上角和右上角。 迷宫格子中分别放有0和1,0表示可通,1表示不能,迷宫走的规则如下: 即从某点开始,有八个方向可走,前进方格中数字为0时表示可通过…

wps加载项学习4-通用API+表格API

都是根对象Application上的API FileDialog(保存文件,另存为等、、) 激活sheet Application.Workbooks.Open(路径) -- 打开制定路径的工作簿 检测文件类型,判断是不是excel: Application.Quit() -- 关闭所有打开的exce…

如何修改安全帽/反光衣检测AI边缘计算智能分析网关V4的IP地址?

TSINGSEE青犀推出的智能分析网关V4,是一款集成了BM1684芯片的高性能AI边缘计算智能硬件。其内置的高性能8核ARM A53处理器,主频可高达2.3GHz,INT8峰值算力更是达到了惊人的17.6Tops。此外,该硬件还预装了近40种AI算法模型&#xf…

【新闻】HELIX AI 机器人“S1”解析:4 项新 AI 自动化突破超越特斯拉

视频内容介绍了Figure AI最新发布的Helix AI系统的第二个演示,包含四个新的技术突破和一个特别奖励,以下是英中字幕: These AI robots can now move even faster than humans as Figure AI just released the second demo of its newest Heli…

GEO数据挖掘

GEO TCGA: 数据下载: 首先在搜索栏搜索相应的癌症 一个课题Series里面有10个样本Samples,制作基因芯片的公司,检测平台,芯片编号等Platforms 点进自己需要的项目之后 点击 上面肿瘤组,下面正常组 分组&…

AI应用开发 3 - prompt 提示词工程

GitHub - mattnigh/ChatGPT3-Free-Prompt-List: A free guide for learning to create ChatGPT3 Prompts 1.CRISPE框架 CRISPE Prompt Framework,CRISPE 是首字母的缩写,分别代表以下含义: CR:Capacity and Role(能…

SpringBoot返回文件让前端下载的几种方式

01 背景 在后端开发中,通常会有文件下载的需求,常用的解决方案有两种: 不通过后端应用,直接使用nginx直接转发文件地址下载(适用于一些公开的文件,因为这里不需要授权)通过后端进行下载&#…

统计有序矩阵中的负数

题目链接 统计有序矩阵中的负数 题目描述 注意点 1 < m, n < 100-100 < grid[i][j] < 100矩阵中的元素无论是按行还是按列&#xff0c;都以非严格递减顺序排列 解答思路 第一种思路是遍历每一行&#xff0c;再对每行进行二分查找找到每一行第一个负数的位置&a…