【C#】TimeSpan

2023-12-22 12:01
文章标签 c# .net netcore timespan

本文主要是介绍【C#】TimeSpan,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 概述
  • 属性
  • 时间计算
  • 拓展
  • 来源

概述

TimeSpan结构:表示一个时间间隔。
它含有以下四个构造函数:

  1. TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。(DateTime.Tick:是计算机的一个计时周期,单位是一百纳秒,即一千万分之一秒)

  2. TimeSpan(Int32, Int32, Int32)将 TimeSpan结构的新实例初始化为指定的小时数、分钟数和秒数。

  3. TimeSpan(Int32, Int32, Int32, Int32)将
    TimeSpan结构的新实例初始化为指定的天数、小时数、分钟数和秒数。

  4. TimeSpan(Int32,Int3效果为:2, Int32, Int32, Int32)将新的
    TimeSpan结构初始化为指定的天数、小时数、分钟数、秒数和毫秒数。

据微软文档,TimeSpan刻度单位为100ns

TimeSpan格式为:天.时:分:秒.百纳秒

单位格式:day.hour:minute:second.100ns

格式示例:0.0:0:0.0000000
在这里插入图片描述

属性

Days获取当前 TimeSpan 结构所表示的时间间隔的天数部分。
Hours获取当前 TimeSpan 结构所表示的时间间隔的小时数部分。
Milliseconds获取当前 TimeSpan 结构所表示的时间间隔的毫秒数部分。
Minutes获取当前 TimeSpan 结构所表示的时间间隔的分钟数部分。
Seconds获取当前 TimeSpan 结构所表示的时间间隔的秒数部分。
Ticks获取表示当前 TimeSpan 结构的值的刻度数。
TotalDays获取以整天数和天的小数部分表示的当前 TimeSpan 结构的值。
TotalHours获取以整小时数和小时的小数部分表示的当前 TimeSpan 结构的值。
TotalMilliseconds获取以整毫秒数和毫秒的小数部分表示的当前 TimeSpan 结构的值。
TotalMinutes获取以整分钟数和分钟的小数部分表示的当前 TimeSpan 结构的值。
TotalSeconds获取以整秒数和秒的小数部分表示的当前 TimeSpan 结构的值。

时间计算

例如我使用下面的代码表示 5 秒

const int needCount = 5 * 1000;

因为后面使用的是延迟,延迟的代码很简单

Task.Delay(needCount)

这时传入的是一个毫秒,但是很多小伙伴问,为什么是 5*1000 表示 5秒,他不知道我使用的是毫秒。

所以建议使用 TimeSpan 来写时间,下面的需求是在判断在开机 20 秒内的延迟,如果在开机 20 秒内启动应用,那么就需要延迟时间

   var needTime = TimeSpan.FromSeconds(20); //开机20秒左右 USB 已经加载完成

计算时间的减法或加法可以使用重载+和-,请看下面代码,就是把两个 TimeSpan 相减,返回的值也是一个 TimeSpan ,下面的代码是编译不通过的。

   var chikesereHearpawwirboo = needTime - maxDelay;Console.WriteLine(chikesereHearpawwirboo);

如果需要从毫秒转 TimeSpan ,请看下面代码

   // 毫秒转 TimeSpanvar milliseconds = 5 * 1000;var time = TimeSpan.FromMilliseconds(milliseconds);// TimeSpan 转 毫秒milliseconds =(int) time.TotalMilliseconds;

因为从秒转毫秒的值是 double 需要进行转换,如果使用 int 转换有时会越界,建议使用下面代码

   // 毫秒转 TimeSpanlong milliseconds = 5 * 1000;var time = TimeSpan.FromMilliseconds(milliseconds);// TimeSpan 转 毫秒milliseconds = (long) Math.Ceiling(time.TotalMilliseconds);

这个计算适合在有天数和小时等的计算,如计算 1天 减去 3h10m 有多少毫秒,如果不使用 TimeSpan 自己重写,还是需要写很多代码

   var time = TimeSpan.FromDays(1);var cut = new TimeSpan(0, 3, 10, 0);var milliseconds = (long)(time - cut).TotalMilliseconds;

尝试不使用 TimeSpan 想想需要怎么写

C#使用timespan和timer完成一个简单的倒计时器

首先利用timespan数据类型这样构造:

TimeSpan ts = new TimeSpan(0, 45, 0);

这样就声明了一个长度为45分钟的时间段,其中构造函数参数的含义:

TimeSpan(hour,minute,second);

然后拖进去一个timer,叫timer1

timer1.Interval=1000;

设置一秒一个周期

在timer的tick事件里面这样写:

private
void timer1_Tick(object
sender, EventArgs e){String str = ts.Hours.ToString() + ":"
+ ts.Minutes.ToString() + ":"
+ ts.Seconds.ToString();label17.Text = str;//label17用来显示剩余的时间ts = ts.Subtract(new
TimeSpan(0, 0, 1));//每隔一秒减去一秒if
(ts.TotalSeconds < 0.0)//当倒计时完毕{timer1.Enabled = false;MessageBox.Show("考试时间到,系统将强行交卷");//提示时间到,下面可以加你想要的操作}}

拓展

皮秒,符号ps(英语:picosecond ).
1皮秒等于一万亿分之一秒(10-12秒)

1,000 皮秒 = 1纳秒

1,000,000 皮秒 = 1微秒

1,000,000,000 皮秒 = 1毫秒

1,000,000,000,000 皮秒 = 1秒

纳秒,符号ns(英语:nanosecond ).
1纳秒等于十亿分之一秒(10-9秒)

1 纳秒 = 1000皮秒

1,000 纳秒 = 1微秒

1,000,000 纳秒 = 1毫秒

1,000,000,000 纳秒 = 1秒

微秒,符号μs(英语:microsecond ).
1微秒等于一百万分之一秒(10-6秒)

0.000 001 微秒 = 1皮秒

0.001 微秒 = 1纳秒

1,000 微秒 = 1毫秒

1,000,000 微秒 = 1秒

毫秒,符号ms(英语:millisecond ).
1毫秒等于一千分之一秒(10-3秒)

0.000 000 001 毫秒 = 1皮秒

0.000 001 毫秒 = 1纳秒

0.001 毫秒 = 1微秒

1000 毫秒 = 1秒

最好我测试出来结果是

timespan s=00:00:00.0008025

转换成Milliseconds ms=0.8025毫秒。

来源

C#使用TimeSpan时间计算 C#使用TimeSpan时间计算的简单实现
C# Stopwatch与TimeSpan详解
C#的TimeSpan
TimeSpan 结构

这篇关于【C#】TimeSpan的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523877

相关文章

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

C#使用SendMessage实现进程间通信的示例代码

《C#使用SendMessage实现进程间通信的示例代码》在软件开发中,进程间通信(IPC)是关键技术之一,C#通过调用WindowsAPI的SendMessage函数实现这一功能,本文将通过实例介绍... 目录第一章:SendMessage的底层原理揭秘第二章:构建跨进程通信桥梁2.1 定义通信协议2.2

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1