2016-08-12 09:58:38 chensirbbk 阅读数 1733

//开始执行时间

TimeSpan startTime = new TimeSpan(System.DateTime.Now.Ticks);


A......................代码块

B........................................代码块



TimeSpan endTime = new TimeSpan(System.DateTime.Now.Ticks);
TimeSpan countTime = startTime.Subtract(endTime).Duration();


//得到A,B代码块执行的时间(毫秒)

Console.log(countTime.TotalMilliseconds.ToString());

2015-07-19 02:06:19 t46414704152abc 阅读数 694

对于TimeSpan不是很清楚,对于其中的代码不甚了解,因此,对于其中所有函数进行输出,就能完整的理解了c#中的TimeSpan了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace CSDailyPractice
{
    class Program
    {
        static void Main(string[] args)
        {
            TimeSpan t1 = DateTime.Now.TimeOfDay;
            Console.WriteLine("当前日期:   {0}",t1);
            Console.WriteLine("tick是:   {0}", t1.Ticks);
            Console.WriteLine("Hours:   {0}", t1.Hours);
            Console.WriteLine("Minutes:   {0}", t1.Minutes);
            Console.WriteLine("Second:   {0}", t1.Seconds);
            Console.WriteLine("MilliSeconds:   {0}", t1.Milliseconds);
            Console.WriteLine("TotalDays:   {0}",t1.TotalDays);
            Console.WriteLine("TotalHour:   {0}",t1.TotalHours);
            Console.WriteLine("TotalSeconds:   {0}", t1.TotalSeconds);
            Console.WriteLine("TotalMilliSeconds:   {0}", t1.TotalMilliseconds);
            
            Thread.Sleep(2000);
            Console.WriteLine("\n\n\n");

            TimeSpan t2 = DateTime.Now.TimeOfDay;
            Console.WriteLine("当前日期:   {0}", t2);
            Console.WriteLine("tick是:   {0}", t2.Ticks);
            Console.WriteLine("Hours:   {0}", t2.Hours);
            Console.WriteLine("Minutes:   {0}", t2.Minutes);
            Console.WriteLine("Second:   {0}", t2.Seconds);
            Console.WriteLine("MilliSeconds:   {0}", t2.Milliseconds);
            Console.WriteLine("TotalDays:   {0}", t2.TotalDays);
            Console.WriteLine("TotalHour:   {0}", t2.TotalHours);
            Console.WriteLine("TotalSeconds:   {0}", t2.TotalSeconds);
            Console.WriteLine("TotalMilliSeconds:   {0}", t2.TotalMilliseconds);

            Console.WriteLine("\n\n\n");
            TimeSpan result = t2 - t1;
            Console.WriteLine("当前日期:   {0}", result);
            Console.WriteLine("tick是:   {0}", result.Ticks);
            Console.WriteLine("Hours:   {0}", result.Hours);
            Console.WriteLine("Minutes:   {0}", result.Minutes);
            Console.WriteLine("Second:   {0}", result.Seconds);
            Console.WriteLine("MilliSeconds:   {0}", result.Milliseconds);
            Console.WriteLine("TotalDays:   {0}", result.TotalDays);
            Console.WriteLine("TotalHour:   {0}", result.TotalHours);
            Console.WriteLine("TotalSeconds:   {0}", result.TotalSeconds);
            Console.WriteLine("TotalMilliSeconds:   {0}", result.TotalMilliseconds);
        }
    }
}
运行结果如下:


直接看代码运行结果就能明白各个函数的意思了。

2016-03-22 23:03:50 u013166622 阅读数 573

控制台代码:

            //计算时间间隔
            DateTime dt1 = DateTime.Now;
            DateTime dt2 = dt1.AddDays(1);
            TimeSpan t = new TimeSpan();
            TimeSpan t1 = new TimeSpan();
            Console.WriteLine(dt2);
            Console.WriteLine(DateTime.Now);
            t = dt2 - dt1;
            t1 = dt1 - dt2;
            Console.WriteLine(t.TotalDays);
            Console.WriteLine(t1.TotalDays);
            Console.ReadKey();


2019-08-29 21:21:47 qq_24025219 阅读数 559

标题

  1. 属性和方法
    1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,
    你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻
    2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值
    下面的列表涵盖了其中的一部分:
    Add:与另一个TimeSpan值相加。
    Days:返回用天数计算的TimeSpan值。
    Duration:获取TimeSpan的绝对值。
    Hours:返回用小时计算的TimeSpan值
    Milliseconds:返回用毫秒计算的TimeSpan值。
    Minutes:返回用分钟计算的TimeSpan值。
    Negate:返回当前实例的相反数。
    Seconds:返回用秒计算的TimeSpan值。
    Subtract:从中减去另一个TimeSpan值。
    Ticks:返回TimeSpan值的tick数。
    TotalDays:返回TimeSpan值表示的天数。
    TotalHours:返回TimeSpan值表示的小时数。
    TotalMilliseconds:返回TimeSpan值表示的毫秒数。
    TotalMinutes:返回TimeSpan值表示的分钟数。
    TotalSeconds:返回TimeSpan值表示的秒数
  2. 日期转化为时间戳

        public static int DateTimeToInt(DateTime dt)
        {
            int date = 0;
            TimeSpan ts2 = new TimeSpan(dt.Ticks);
            TimeSpan ts3 = new TimeSpan(DateTime.Parse("1970-01-01").Ticks);
            TimeSpan ts_1 = ts2.Subtract(ts3).Duration();
            Int32 NowMinu = (Int32)ts_1.TotalSeconds;
            date = NowMinu;
            return date;
        }
2019-01-04 10:16:00 weixin_30707875 阅读数 3
原文:C# TimeSpan 时间计算

本文告诉大家简单的方法进行时间计算。

实际上使用 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 ,请看下面代码

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

            // TimeSpan 转 毫秒
            milliseconds =(int) time.TotalMilliseconds;

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


            // 毫秒转 TimeSpan
            long 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 想想需要怎么写


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/C-TimeSpan-%E6%97%B6%E9%97%B4%E8%AE%A1%E7%AE%97.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

posted on 2019-01-04 10:16 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10218335.html

TimeSpan用法详解

阅读数 1642

没有更多推荐了,返回首页