C#用TimeSpan的Days、Hours、Minutes及Seconds属性确定程序的运行时间

目录

一、TimeSpan结构的Days、Hours、Minutes及Seconds属性

1.Days属性

2.Hours属性

3.Minutes属性

4.Seconds属性

二、确定程序运行时间的方法

1.实例源码

2.生成效果


在程序设计过程中,经常需要在主窗体中动态地显示程序的运行时间。

一、TimeSpan结构的Days、Hours、Minutes及Seconds属性

1.Days属性

TimeSpan结构的Days属性用来获取由当前TimeSpan结构表示的整天数。 语法格式如下:

cs 复制代码
publie int Days {get;}

参数说明
属性值:整型数值,表示此TimeSpan结构的天数部分。返回值可以是正数也可以是负数。

2.Hours属性

TimeSpan结构的Hours属性用来获取由当前TimeSpan结构表示的整小时数。 语法格式如下:

cs 复制代码
public int Hours{get;}

参数说明
属性值:整型数值,表示当前TimeSpan结构的小时分量。返回值的范围为-23~23。

3.Minutes属性

TimeSpan结构的Minutes属性用来获取由当前TimeSpan结构表示的整分钟数。语法格式如下:

cs 复制代码
public int Minutes{get;}

参数说明
属性值:整型数值,表示当前TimeSpan结构的分钟分量。返回值的范围为-59~59。

4.Seconds属性

TimeSpan结构的Seconds属性用来获取由当前TimeSpan结构表示的整秒数。 语法格式如下:

cs 复制代码
public int Seconds {get;}

参数说明
属性值:整型数值,表示当前TimeSpan结构的秒分量。返回值的范围为-59~59。

二、确定程序运行时间的方法

在窗体Load事件中获取系统时间。然后,使用线程获取系统时间并与窗体载入时获取的时间相减,会得到一个TimeSpan对象,此TimeSpan对象就是程序运行的时间。最后,使用线程在StatusStrip中动态显示程序的运行时间。

1.实例源码

cs 复制代码
// 用TimeSpan的Days、Hours、Minutes及Seconds属性确定程序的运行时间
namespace _066
{
    public partial class Form1 : Form
    {
        private StatusStrip? statusStrip1;
        /*public*/ static ToolStripStatusLabel? toolStripStatusLabel1;
        /*public*/ static DateTime? datetime;//声明时间字段

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // toolStripStatusLabel1
            // 
            toolStripStatusLabel1 = new ToolStripStatusLabel
            {
                Name = "toolStripStatusLabel1",
                Size = new Size(116, 17),
                Text = "程序运行的时间是:"
            };
            // 
            // statusStrip1
            // 
            statusStrip1 = new StatusStrip
            {
                Location = new Point(0, 89),
                Name = "statusStrip1",
                Size = new Size(364, 22),
                TabIndex = 0,
                Text = "statusStrip1"
            };
            statusStrip1.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel1 });
            statusStrip1.SuspendLayout();          
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(364, 111);
            Controls.Add(statusStrip1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "用TimeSpan属性确定程序的运行时间";
            statusStrip1.ResumeLayout(false);
            statusStrip1.PerformLayout();
            ResumeLayout(false);
            PerformLayout();

            CalculateTime();
        }

        private static void CalculateTime()
        {
            datetime = DateTime.Now;
            Thread thread = new(
                () =>               //使用Lambda表达式创建线程
                {
                    while (true)    //无限循环
                    {
                        TimeSpan timespan = (TimeSpan)(DateTime.Now - datetime);
                        Parallel.Invoke(
                            () =>  //使用Lambda表达式调用窗体线程
                            {
                                toolStripStatusLabel1!.Text = string.Format(//显示程序启动时间
                                    "系统已经运行: {0}天{1}小时{2}分{3}秒",
                                    timespan.Days, timespan.Hours,
                                    timespan.Minutes, timespan.Seconds);
                            });
                        Thread.Sleep(1000);//线程挂起1秒钟
                    }
                })
            {
                IsBackground = true
            };
            thread.Start();
        }
    }
}

2.生成效果

相关推荐
大模型码小白27 分钟前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
段一凡-华北理工大学2 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe3 小时前
C++——多态
开发语言·c++
心平气和量大福大3 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
白露与泡影4 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
从零开始的代码生活_5 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸5 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++
GIS阵地5 小时前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
yaoxin5211236 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
groundhappy6 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python