C#用DateAndTime.DateDiff方法和TimeSpan分别计算时间间隔

news2024/9/28 17:26:26

目录

一、计算时间间隔的方法

1.用DateAndTime.DateDiff方法计算时间间隔

2.使用TimeSpan获取日期时间间隔

二、实例

1.示例一:用DateAndTime.DateDiff方法计算时间间隔

2.示例二:使用TimeSpan获取日期时间间隔 


一、计算时间间隔的方法

1.用DateAndTime.DateDiff方法计算时间间隔

        在程序设计过程中,经常需要计算两个时间信息所间隔的天数,使用DateDiff方法方便地计算出两个时间段的间隔。

2.使用TimeSpan获取日期时间间隔

        使用TimeSpan也可以获取日期时间的间隔数,首先将两个DateTime对象相减,此时会返回TimeSpan对象,然后调用TimeSpan对象的Days属性就可以方便地得到两个DateTime对象所间隔的天数。

        TimeSpan表示一个时间间隔。一个TimeSpan对象都表示一个时间间隔 (持续时间的时间或时间),单位为正数或负数的天数、 小时、 分钟、 秒和小数部分的第二个数字。

//主要属性
Days:Int32 此实例的天数部分。 返回值可以是正数也可以是负数。
Hours:Int32 当前 TimeSpan 结构的小时数部分。 返回值的范围为 -23 到 23。
Milliseconds:Int32 当前 TimeSpan 结构的毫秒数部分。 返回值的范围为 -999 到 999。
Minutes:Int32 当前 TimeSpan 结构的分钟数部分。 返回值的范围为 -59 到 59。
Seconds:Int32 当前 TimeSpan 结构的秒数部分。 返回值的范围为 -59 到 59。
Ticks:Int64 此实例包含的刻度数。
TotalDays:Double 此实例表示的总天数。
TotalHours:Double 此实例表示的总小时数。
TotalMilliseconds:Double 此实例表示的总毫秒数。
TotalMinutes:Double 此实例表示的总分钟数。
TotalSeconds:Double 此实例表示的总秒数。

二、实例

1.示例一:用DateAndTime.DateDiff方法计算时间间隔

// DateAndTime.DateDiff()
using Microsoft.VisualBasic;

namespace _062
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private DateTimePicker? dateTimePicker2;
        private DateTimePicker? dateTimePicker1;
        private Label? label2;
        private Label? label1;
        private Button? button1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // dateTimePicker2
            // 
            dateTimePicker2 = new DateTimePicker
            {
                Location = new Point(123, 49),
                Name = "dateTimePicker2",
                Size = new Size(200, 23),
                TabIndex = 3
            };
            // 
            // dateTimePicker1
            //      
            dateTimePicker1 = new DateTimePicker
            {
                Location = new Point(123, 25),
                Name = "dateTimePicker1",
                Size = new Size(200, 23),
                TabIndex = 2
            };
            // 
            // label2
            //        
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(6, 55),
                Name = "label2",
                Size = new Size(104, 17),
                TabIndex = 1,
                Text = "第二次输入时间:"
            };
            // 
            // label1
            //        
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(6, 31),
                Name = "label1",
                Size = new Size(104, 17),
                TabIndex = 0,
                Text = "第一次输入时间:"
            };
            // 
            // button1
            //          
            button1 = new Button
            {
                Location = new Point(135, 104),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 2,
                Text = "计算间隔",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(12, 12),
                Name = "groupBox1",
                Size = new Size(330, 86),
                TabIndex = 0,
                TabStop = false,
                Text = "求时间间隔"
            };
            groupBox1.Controls.Add(dateTimePicker2);
            groupBox1.Controls.Add(dateTimePicker1);
            groupBox1.Controls.Add(label2);
            groupBox1.Controls.Add(label1);
            groupBox1.SuspendLayout();
           
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(354, 136);
            Controls.Add(button1);
            Controls.Add(groupBox1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "计算时间间隔";         
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
        }
        /// <summary>
        /// 使用DateDiff方法获取日期间隔
        /// </summary>
        private void Button1_Click(object? sender, EventArgs e)
        {
            MessageBox.Show("间隔 " +
               DateAndTime.DateDiff(DateInterval.Day, dateTimePicker1!.Value, dateTimePicker2!.Value,
                    FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1).ToString() + " 天", "间隔时间");
        }
    }
}

 

2.示例二:使用TimeSpan获取日期时间间隔 

// 用TimeSpan对象的方法计算时间间隔
namespace _062_1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);
           
            DateTime date1 = new(2023, 1, 1, 8, 0, 15);    
            DateTime date2 = new(2024, 8, 18, 13, 30, 30);
            
            TimeSpan interval = date2 - date1; 
            Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString());// Display individual properties of the resulting TimeSpan object.

            Console.WriteLine("   {0,-35} {1,20}", "Value of Days Component:", interval.Days);
            Console.WriteLine("   {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays);
            Console.WriteLine("   {0,-35} {1,20}", "Value of Hours Component:", interval.Hours);
            Console.WriteLine("   {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours);
            Console.WriteLine("   {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes);
            Console.WriteLine("   {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes);
            Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds);
            Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds);
            Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds);
            Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds);
            Console.WriteLine("   {0,-35} {1,20:N0}", "Ticks:", interval.Ticks);
        }
    }
}
// 运行结果:
/*
2024-08-18 13:30:30 - 2023-01-01 08:00:15 = 595.05:30:15
   Value of Days Component:                             595
   Total Number of Days:                  595.2293402777777
   Value of Hours Component:                              5
   Total Number of Hours:                14285.504166666668
   Value of Minutes Component:                           30
   Total Number of Minutes:                       857130.25
   Value of Seconds Component:                           15
   Total Number of Seconds:                      51,427,815
   Value of Milliseconds Component:                       0
   Total Number of Milliseconds:             51,427,815,000
   Ticks:                               514,278,150,000,000

 */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1410571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3 组件通信 mitt

mitt 安装 pnpm add mitttypescript 在 tsconfig.json 中设置 “strict”: true {"compilerOptions": {"strict": true,} }使用 导出 emitter src/utils/mitt/index.ts import mitt from mitttype Events {get-name: string }export const emitter …

go-zero 统一返回

1、整体目录结构 1、全局处理主入口 package manageimport ("net/http""github.com/zeromicro/go-zero/rest/httpx" )type Body struct {Code int json:"code"Message string json:"message"Result interface{} jso…

每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!

写在开头 请聊一聊Java中方法的重写和重载&#xff1f; 这个问题应该是各大厂面试时问的最多的话题之一了&#xff0c;它们几乎贯穿了我们日常的开发工作&#xff0c;在过往的博客中我们多多少少都提到过重载与重写&#xff0c;而今天我们就一起来详细的学习一下这二者的功能与…

arcgis实现截图/截屏功能

arcgis实现截图/截屏功能 文章目录 arcgis实现截图/截屏功能前言效果展示相关代码 前言 本篇将使用arcgis实现截图/截屏功能&#xff0c;类似于qq截图 效果展示 相关代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta nam…

InnoDB索引

B树与B树 索引的数据结构就是B树&#xff0c;它的叶子节点存储数据(数据页)&#xff0c;非叶子节点存储索引(索引页)。 所以索引走树&#xff0c;全表扫走叶子节点的单向链表(mysql里优化成双向) 二级索引页(非主键) 多个目录项记录 目录项记录 每页记录的最小值 主键值 …

Linux系统下常用软件安装汇总,包括mysql,java,git,redis等

01.环境搭建 1.安装列表 MySQL 5.7.11 Java 1.8 Apache Maven 3.6 tomcat8.5 git Redis Nginx python docker 2.安装mysql 1.拷贝mysql安装文件到Linux的某个目录下 2.解压Linux安装包&#xff1a;tar -xvzf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz 3.进入解压后…

[漏洞复现]Redis 沙盒逃逸漏洞(CVE-2022-0543)

一、漏洞情况分析 Redis 存在代码注入漏洞&#xff0c;攻击者可利用该漏洞远程执行代码。 二、漏洞复现 春秋云境.com 进入靶场 开始复现 三、漏洞处置建议 把靶场关了&#xff0c;跟漏洞说“白白吧

4.【SpringBoot3】文章管理接口开发

序言 在文章管理模块&#xff0c;有以下接口需要开发&#xff1a; 新增文章文章列表&#xff08;条件分页&#xff09;获取文章详情更新文章删除文章 数据库表字段和实体类属性&#xff1a; 1. 新增文章 需求分析 当用户点击左侧菜单中的“文章管理”后&#xff0c;页面主…

apk加固后,签名后没有V2签名的,targetsdk版本改为30后报字节没有对齐的

当我吧targetsdk版本改为30后,加固后重新签名发现,安装不上报错 adb: failed to install E:\XX\262_rel.apk: Failure [-124: Failed parse during installPackageLI: Targeting R (version 30 and above) requires the resources.arsc of installed APKs to be stored uncomp…

全桥变压器计算1

一共有两级&#xff0c;先DC升压&#xff0c;后H桥逆变为AC 因为两级都有损耗&#xff0c;所以一般用输入功率计算 电池升压到400V高压用的效率用表示&#xff0c;后面DC转AC的效率用表示&#xff0c;输入电压用Vin&#xff0c;输出功率Po2000W,输入功率为Pin 一般和96% 所…

叩开c++的大门

目录 1. 什么是c&#xff1f; 2. c的发展史 3. c和c语言的区别是什么呢&#xff1f; 4. 接下来让我们正式进入c的学习吧。 4.1 c的关键字 4.2 命名空间 4.2.1 命名空间的定义 4.2.2 命名空间的使用 4.3 c的输入输出 std命名空间的使用惯例std是C标准库的命名空间&…

深入《羊了个羊》:从0到1的消除游戏开发

一、游戏简介 《羊了个羊》是一款备受欢迎的消除类游戏。玩家需要通过交换相邻的方块&#xff0c;使三个或更多相同方块连成一线&#xff0c;从而将它们消除。消除方块可以获得分数&#xff0c;并在全球排行榜上与其他玩家竞争。 设置项目结构 首先&#xff0c;在文本编辑器中…

【数据结构与算法】之字符串系列-20240126

这里写目录标题 一、12. 整数转罗马数字二、43. 字符串相乘三、49. 字母异位词分组四、151. 反转字符串中的单词五、179. 最大数 一、12. 整数转罗马数字 中等 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D …

前端vue集成echarts图形报表样例

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f415;1.在项目终端下载echarts依赖包&#x1f3e8;2.在main.js中导入echarts资源包并使用&#x1f380;3.在.vue文件中直接使用echarts&#xff0c;下面是一个样例&a…

计算机找不到x3daudio1_7.dll无法继续执行的5种解决方法

当我们在运行一款游戏时&#xff0c;遇到了“游戏找不到x3daudio1_7.dll”这样的错误提示&#xff0c;并因此无法继续执行游戏进程&#xff0c;这种情况具体是什么问题呢&#xff1f;我们可以深入解析一下。通常情况下&#xff0c;这种报错信息意味着系统缺失了一个关键的动态链…

144基于matlab的平面桁架结构的总体刚度矩阵计算

基于matlab的平面桁架结构的总体刚度矩阵计算&#xff0c;最后以图形形式显示出桁架结构&#xff0c;程序已调通&#xff0c;可直接运行。 144matlab 平面桁架 有限元分析 总体刚度 (xiaohongshu.com)

华为鸿蒙扩圈何时才会停息~

自从2023年华为秋季发布会上宣布鸿蒙Next不在兼容Android后&#xff0c;鸿蒙才开始扩圈行动&#xff0c;直到2024年1月18日鸿蒙千帆启航的仪式上宣布已有200鸿蒙原生态应用正在加速开发中&#xff0c;并且宣布启动了第二阶段的扩圈行动。 就1月25日就有多家银行和淘宝等支付平台…

Grafana loki配置, 无脑版

使用docker部署Grafana loki 1.创建 docker-compose.yml 文件 touch docker-compose.yml写入以下内容 vim touch docker-compose.yml version: "3"networks:loki:services:loki:image: grafana/loki:latestrestart: unless-stoppedports:- "3100:3100"vo…

1.24 C++ day1

思维导图 试编程 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string s;cout << "please enter a str…

设置模式之责任链模式

目录 1.概述 2.结构 3.实现 4.总结 1.概述 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为性设计模式&#xff1b;它为请求创建了一个接收者对象的链&#xff0c;允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均…