timespan使用方法详解

TimeSpan使用方法详解

什么是TimeSpan?

TimeSpan是.NET Framework中表示时间间隔的一个结构体,它用于表示两个时间点之间的时间间隔,或一段时间的持续时间。

TimeSpan包括天数、小时数、分钟数、秒数和毫秒数,可以使用各种方式构造TimeSpan实例。TimeSpan在.NET平台中被广泛用于处理时间。

在代码中创建TimeSpan

创建TimeSpan实例的方式有多种,其中最常用的方式是使用构造函数。TimeSpan构造函数的参数可以是一个时间间隔的很多种数据类型,包括整数、小数和其他TimeSpan实例。

从天、小时、分钟、秒、毫秒创建TimeSpan

// Create a TimeSpan representing 2 days
TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

// Create a TimeSpan representing 2 hours
TimeSpan twoHourTimeSpan = new TimeSpan(0, 2, 0, 0); 

// Create a TimeSpan representing 2 minutes
TimeSpan twoMinuteTimeSpan = new TimeSpan(0, 0, 2, 0); 

// Create a TimeSpan representing 2 seconds
TimeSpan twoSecondTimeSpan = new TimeSpan(0, 0, 0, 2); 

// Create a TimeSpan representing 2 milliseconds
TimeSpan twoMillisecondTimeSpan = new TimeSpan(0, 0, 0, 0, 2); 

从Ticks创建TimeSpan

Ticks是TimeSpan所使用的最小时间单位,1个Ticks等于100纳秒。从Ticks构造TimeSpan需要传入一个long类型的值,代表了从0001年1月1日午夜12点到指定时间的Ticks数。

// Create a TimeSpan from Ticks
TimeSpan twoMillisecondTimeSpan = new TimeSpan(2); // equivalent to TimeSpan.FromTicks(2)

从TimeSpan创建TimeSpan

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 
TimeSpan fourHourTimeSpan = new TimeSpan(0, 4, 0, 0); 

TimeSpan sixHourTimeSpan = twoDayTimeSpan + fourHourTimeSpan; 

在这种情况下,两个TimeSpan被相加。这样可以创建一个时间间隔,该时间间隔是由两个时间间隔之和得出的。

TimeSpan的属性和方法

属性

Ticks

获取TimeSpan表示的时间间隔的总Ticks数

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

long totalTicks = twoDayTimeSpan.Ticks; // equals 172800000000

Days

获取TimeSpan表示的时间间隔的总天数

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

int totalDays = twoDayTimeSpan.Days; // equals 2

Hours

获取TimeSpan表示的时间间隔的小时数

TimeSpan twoHourTimeSpan = new TimeSpan(0, 2, 0, 0); 

int totalHours = twoHourTimeSpan.Hours; // equals 2

Minutes

获取TimeSpan表示的时间间隔的分钟数

TimeSpan twoMinuteTimeSpan = new TimeSpan(0, 0, 2, 0); 

int totalMinutes = twoMinuteTimeSpan.Minutes; // equals 2

Seconds

获取TimeSpan表示的时间间隔的秒数

TimeSpan twoSecondTimeSpan = new TimeSpan(0, 0, 0, 2); 

int totalSeconds = twoSecondTimeSpan.Seconds; // equals 2

Milliseconds

获取TimeSpan表示的时间间隔的毫秒数

TimeSpan twoMillisecondTimeSpan = new TimeSpan(0, 0, 0, 0, 2); 

int totalMilliseconds = twoMillisecondTimeSpan.Milliseconds; // equals 2

TotalDays

获取TimeSpan表示的时间间隔的总天数(浮点数)

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

double totalDays = twoDayTimeSpan.TotalDays; // equals 2

TotalHours

获取TimeSpan表示的时间间隔的总小时数(浮点数)

TimeSpan twoHourTimeSpan = new TimeSpan(0, 2, 0, 0); 

double totalHours = twoHourTimeSpan.TotalHours; // equals 2

TotalMinutes

获取TimeSpan表示的时间间隔的总分钟数(浮点数)

TimeSpan twoMinuteTimeSpan = new TimeSpan(0, 0, 2, 0); 

double totalMinutes = twoMinuteTimeSpan.TotalMinutes; // equals 2

TotalSeconds

获取TimeSpan表示的时间间隔的总秒数(浮点数)

TimeSpan twoSecondTimeSpan = new TimeSpan(0, 0, 0, 2); 

double totalSeconds = twoSecondTimeSpan.TotalSeconds; // equals 2

TotalMilliseconds

获取TimeSpan表示的时间间隔的总毫秒数(浮点数)

TimeSpan twoMillisecondTimeSpan = new TimeSpan(0, 0, 0, 0, 2); 

double totalMilliseconds = twoMillisecondTimeSpan.TotalMilliseconds; // equals 2

方法

Add

将指定的TimeSpan添加到此实例中

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

TimeSpan fourHourTimeSpan = new TimeSpan(0, 4, 0, 0); 

TimeSpan sixHourTimeSpan = twoDayTimeSpan.Add(fourHourTimeSpan); 
// equals 2 days + 4 hours = 2 days and 4 hours

Subtract

从此实例中减去指定的TimeSpan

TimeSpan twoDayTimeSpan = new TimeSpan(2, 0, 0, 0); 

TimeSpan fourHourTimeSpan = new TimeSpan(0, 4, 0, 0); 

TimeSpan fourDayTimeSpan = twoDayTimeSpan.Subtract(fourHourTimeSpan); 
// equals 2 days - 4 hours = 1 day and 20 hours

示例

示例1:计算程序执行时间

static void Main(string[] args)
{
    DateTime start = DateTime.Now; // 记录程序开始时间

    // 计算函数调用

    DateTime end = DateTime.Now; // 记录程序结束时间

    TimeSpan timeSpan = end - start; // 计算时间间隔
    Console.WriteLine("程序执行时间为:" + timeSpan.TotalSeconds + "秒");
}

示例2:计算任务执行时间

static async Task Main(string[] args)
{
    TimeSpan timeout = TimeSpan.FromSeconds(30);

    CancellationTokenSource cts = new CancellationTokenSource(timeout);

    try
    {
        await Task.Delay(TimeSpan.FromSeconds(60), cts.Token);
    }
    catch (TaskCanceledException)
    {
        Console.WriteLine("任务已经超时");
    }
}

以上就是TimeSpan使用方法的详解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:timespan使用方法详解 - Python技术站

(1)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#调用python.exe使用arcpy方式

    下面是详细讲解“C#调用python.exe使用arcpy方式”的完整攻略。 一、前置准备 在 C# 中调用 Python 脚本需要借助于 Process 类,同时需要安装好 python 的开发环境以及第三方库 arcpy。 安装 arcpy: 安装 ArcGIS Desktop 或者 ArcGIS Engine。 执行 ArcGIS Desktop 安装…

    C# 2023年5月15日
    00
  • C#多线程死锁介绍与案例代码

    C#多线程死锁介绍与案例代码 死锁的概念 死锁(Deadlock)指的是多个线程因相互等待而陷入的一种僵局,每个线程都在等待其他线程释放资源。因此,所有线程都处于无法继续执行的状态,形成了死锁。 死锁产生的原因 死锁是由于多个线程相互等待对方所占用的资源而产生的。举例来说,有两个线程 A 和 B,他们需要占用相互持有的两个资源 R1 和 R2,但由于占用资源…

    C# 2023年5月31日
    00
  • Entity Framework Core 大小写敏感处理

      可以使用’StringComparison’吗? 在数据库查询操作中,不可避免去考虑字母大小写的问题,比如要在Movie表中查找“X-Men”这部电影,为了不区分字母大小写,按照Linq to memory的习惯,可能会写出如下代码: DbContext.DbSet<Movie>  .Where(item => string.Equal…

    C# 2023年4月19日
    00
  • 如何在C#中使用 CancellationToken 处理异步任务

    为了在C#中使用CancellationToken处理异步任务,我们需要先了解CancellationToken的概念。CancellationToken是一个结构体,代表了一个取消请求,可以在异步任务运行期间使用它来取消任务。 下面是使用CancellationToken取消异步任务的完整攻略: 1. 创建CancellationToken实例 在开始任务…

    C# 2023年5月15日
    00
  • c#中Empty()和DefalutIfEmpty()用法分析

    C#中Empty()和DefaultIfEmpty()用法分析 在 C# 中,Empty() 和 DefaultIfEmpty() 方法用于对 Empty 或者 null 值进行处理。本文将详细讲解这两个方法的用法和区别。 Empty() 方法 Empty() 方法返回指定类型的空值,用于表示没有任何值的情况。该方法返回的值可以赋值给任何类型的变量,比如字符…

    C# 2023年6月7日
    00
  • C#文件操作的简单实例

    我们来详细讲解一下”C#文件操作的简单实例”攻略。 概览 在C#中,文件操作主要包含5部分内容: 创建文件(Create File) 写入文件(Write to File) 读取文件(Read File) 删除文件(Delete File) 复制文件(Copy File) 下面我们将逐一介绍这些操作。 创建文件 我们可以使用File类的Create方法创建一…

    C# 2023年6月7日
    00
  • Unity实现车型识别的示例代码

    下面就是Unity实现车型识别的完整攻略。 环境准备 在开始前,请确保你已经按照Unity开发的常规流程,搭建好了开发环境。并且已经安装好了Vuforia引擎,可以顺利地在Unity 中进行二维码识别、3D 模型跟踪等处理操作。 示例1:车型识别的基本实现 1.创建识别库: 在Vuforia的开发者后台中,创建一个识别库,可以使用目标生成器(Target M…

    C# 2023年6月3日
    00
  • C#封装的Sqlite访问类实例

    下面是详细讲解“C#封装的Sqlite访问类实例”的完整攻略。 一、Sqlite简介 Sqlite是一个轻量级的关系型数据库管理系统,它的特点是轻巧、可嵌入、可移植和高效,在单机或低并发情况下是一个非常好的选择。在C#中,我们可以使用System.Data.Sqlite命名空间提供的Sqlite连接器来访问Sqlite数据库。 二、C#封装的Sqlite访问…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部