当前位置: 首页 > news >正文

重温一下C#的时间类型,并简单写一个定时器功能

🎉🎉 时间是一个非常抽象的概念,本篇文章我们不深究目前电脑上的时候是如何保持全网同步。主要是讲讲在使用C#编程语言里的时间类型。最后使用定时任务简单写一个提醒功能,比如:每天10点准时打开一次csdn首页,在工作忙碌之际浏览下技术信息或博客🎉🎉

目录

  • 1、C#时间类型
    • 1.1、结构体
    • 1.2、默认值
    • 1.3、设置默认空值
  • 2、定时器功能
    • 2.1、场景描述
    • 2.2、定时类
    • 2.3、当前时间
    • 2.4、定时弹页
    • 2.5、完整代码
    • 2.5、实现效果

1、C#时间类型

在C#开发语言里的时间和日期,主要是使用Datetime类、,用于表达时间和时间处理,TA能够获取和设置时间、时区、以及格式化。

1.1、结构体

很多小伙伴都会以为时间类型是一个class类,从下图可以知道,它是一个struct结构
1).net framework
继承了多个接口类,实现的功能也非常丰富,已经可以满足大部分需求功能
在这里插入图片描述
2).net core
到了跨平台框架后,它是在System.Runtime里
在这里插入图片描述

1.2、默认值

直接定义不赋值,默认也是有值得,它是以公历0001年1月1日00:00:00.000
在这里插入图片描述
1)获取当前时间
从下图可以知道,Now获取的当前时间就是电脑的时间

DateTime dt = DateTime.Now;

在这里插入图片描述

1.3、设置默认空值

由于在实际项目中可能时间会有空值情况,这个时候就不能直接返回值,不然就会显示默认0001时间值。在C#里直接在时间类型后面加个问号接口

DateTime? dtNull;

在这里插入图片描述

💗💗 作者:小5聊
🏆🏆 原则:Write Less Do More!
📋📋 简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

2、定时器功能

在C#里写一个定时任务非常简单,这里使用Task类来实现,这里有一个异步的概念,不深入探究,结合while以及Sleep()休眠方法

2.1、场景描述

每天定时10点整,自动打开一个chrome谷歌浏览器,并跳转到csdn首页。

2.2、定时类

在Task之前,多线程处理方式有Thread、ThreadPool、委托,他们在资源占用、阻塞等方面处理的不好,为了改善才有了Task,启动方法很简单,如下

Task.Run(() =>
{// 写业务代码,和主业务不冲突,异步执行
});

2.3、当前时间

界面可以设置一个label标签,实时显示当前的时间,方法逻辑很简单,直接就是一个Task异步,然后在异步方法里使用while无限循环,每次休眠1秒后再执行,就会有实时时间动态效果。

private void NowTimeData()
{CheckForIllegalCrossThreadCalls = false;Task.Run(() =>{while (true){lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");Thread.Sleep(1 * 1000);}});
}

2.4、定时弹页

同上,异步方法的逻辑判断为小时分秒,满足条件则通过进程类打开浏览器,并跳转到指定地址显示

private void OpenData()
{CheckForIllegalCrossThreadCalls = false;Task.Run(() =>{while (true){if (DateTime.Now.Hour == 10 && DateTime.Now.Minute == 0 && DateTime.Now.Second == 0){Process process = new Process();//process.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";process.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";process.StartInfo.Arguments = $"https://www.csdn.net";process.Start();}Thread.Sleep(1 * 1000);}});
}

2.5、完整代码

判断逻辑,取小时为10,取分钟为0,1分钟执行一次判断,确保只弹出一次

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace CsndWinForm
{public partial class TimeData : Form{public TimeData(){InitializeComponent();NowTimeData();OpenData();}private void NowTimeData(){CheckForIllegalCrossThreadCalls = false;Task.Run(() =>{while (true){lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");Thread.Sleep(1 * 1000);}});}private void OpenData(){CheckForIllegalCrossThreadCalls = false;Task.Run(() =>{while (true){if (DateTime.Now.Hour == 10&& DateTime.Now.Minute == 0){Process process = new Process();//process.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";process.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";process.StartInfo.Arguments = $"https://www.csdn.net";process.Start();}Thread.Sleep(60 * 1000);}});}}
}

2.5、实现效果

在这里插入图片描述

http://www.lryc.cn/news/14992.html

相关文章:

  • MYSQL查询语句执行顺序
  • 总结:电容在电路35个基本常识
  • Kroger EDI 855 采购订单确认报文详解
  • HANA SDA-远程数据源访问
  • 【AUTOSAR】:OS-Hook
  • Open3d入门
  • linux部署zookeeper
  • Junit4升级Junit5汇总
  • Axios二次封装和Api的解耦
  • SpringAOP从入门到源码分析大全,学好AOP这一篇就够了(一)
  • 【单目标优化算法】樽海鞘群算法(Matlab代码实现)
  • 手把手教你,解决C盘分区不足,C盘怎么扩大磁盘分区
  • Ethernet-APL——过程自动化的新黄金标准
  • LVGL Styles
  • 扬帆优配|联通港股创近两年新高!A股资源类股爆发,食品饮料领跌
  • Win10+VS2019+Qt5.15.2下编译QCAD
  • 【微信小程序】原生微信小程序ts模板下引入vant weapp
  • Puppeteer之Pyppeteer——自动登录Gmail(6)
  • python 绘图 —— 绘制从顶部向底部显示的柱形图[ax.bar()]
  • 自定义Task工具,调用系统的IdleHandler方法
  • 生态GEP案例分享
  • 企业级信息系统开发学习笔记1.5 初探Spring AOP
  • Mysql数据库主主从设置
  • 监管持续,医疗卫生机构如何守好“涉疫”数据安全?
  • STM32开发(13)----获取唯一设备标识符UID
  • 华为OD机试 - 最优调度策略(Python) | 机试题+算法思路+考点+代码解析 【2023】
  • 前端零基础入门-002-集成开发环境
  • su和sudo的区别
  • 【ChatGPT】使用ChatGPT进行51单片机程序编程体验
  • Docker之路(1.Docker概述、组成以及特点)