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

devtools/2025/3/4 21:44:12/

        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/devtools/164561.html

相关文章

【开源-常用C/C++命令行解析库对比】

以下是几种常用的C/C命令行解析库的对比表格,以及它们的GitHub开源库地址: 库名称语言特点是否支持子命令是否支持配置文件是否支持自动生成帮助信息GitHub地址ClaraC11及以上单一头文件,轻量级,非异常错误处理,自动类…

Redis--单线程模型

目录 一、引言 二、Redis单线程模型 三、原因 四、为什么redis是单线程模型,但他的速度这么快? 五、总结 一、引言 本篇文章就Redis为什么是单线程模型做简单介绍。 二、Redis单线程模型 redis只使用一个线程,处理所有的命令请求&#x…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(6)

详解(6) 初始化监听套接字数组(listening) n old_cycle->listening.nelts ? old_cycle->listening.nelts : 10;if (ngx_array_init(&cycle->listening, pool, n, sizeof(ngx_listening_t))! NGX_OK){ngx_destroy_p…

Git GitHub基础

git是什么? Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。 关键词: 分布式版本控制软件 软件 安装到我们电脑上的一个工具 版本控制 例如论文&…

【easy视频 | day03】客户端获取视频分类 + 上传投稿

文章目录 前言回顾完成任务1. 客户端获取视频分类2. 上传视频(投稿)2.1 预上传2.2 视频分片上传2.3 删除已上传到临时目录的视频2.4 上传图片2.5 上传视频 总结 前言 本项目非原创,我只是个小小白,跟随 b 站脚步,找到…

JavaWeb后端基础(4)

这一篇就开始是做一个项目了,在项目里学习,我主要记录在学习过程中遇到的问题,以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中,通过四种请求方式,来操作数据的增删改查。 GET : 查询 …

江协科技/江科大-51单片机入门教程——P[3-1] 独立按键控制LED亮灭

本文围绕51单片机开发中的独立按键控制技术展开,系统讲解其硬件结构、电平检测原理与C51编程实现方法。文章从开发板独立按键的物理构造与电路连接入手,剖析按键按下与松开时的电平变化规律,并结合单片机I/O口寄存器操作原理,阐释…

【Elasticsearch】Data Streams

Elasticsearch 的Data Streams是一种用于高效管理和存储时间序列数据(如日志、事件、指标等)的机制。它通过将数据分散到多个后端索引中,同时提供一个统一的接口,使得用户可以像操作单个索引一样操作整个数据流。以下是关于 Data …