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

news/2024/4/27 1:42:39/文章来源:https://blog.csdn.net/lmy_520/article/details/129140398

🎉🎉 时间是一个非常抽象的概念,本篇文章我们不深究目前电脑上的时候是如何保持全网同步。主要是讲讲在使用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.luyixian.cn/news_show_71991.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yolov5源码解读--数据处理模块

yolov5源码解读--数据处理模块加载数据读取图片加载标签马赛克数据增强图片标签其他的数据增强变图像变标签__getitem__构建Batch加载数据 create_dataloader 跳转到datasets.py文件中,可以看到支持输入的文件类型非常丰富。。 回归正题 跳转LoadImagesAndLabel…

分析JEP 290机制的Java实现

简介 https://openjdk.org/jeps/290 Filter Incoming Serialization Data过滤传入的序列化数据 JEP290是Java官方提供的一套来防御反序列化的机制,其核心在于提供了一个ObjectInputFilter接口,通过设置filter对象,然后在反序列化&#xff…

c盘系统盘满了,无损扩容

磁盘管理 计算机-管理-磁盘管理 diskmgmt.msc1.选中c盘,右键选择扩展卷,如果是灰色,表示无法扩展 注意: 未分配区域不在同一磁盘,无法分配; 物理上不挨着的区域,无法分配; 2.把与c…

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建 文章目录【Spring Cloud Alibaba】003-Nacos 概述与单机搭建一、Nacos 概述0、新技术学习思路推荐1、什么是 Nacos2、架构图架构图架构图信息二、Nacos 单机搭建1、下载与启动下载地址编辑 startup.cmd 文件下面对两种模式的…

cocos2d-x4.0 win10环境搭建

cocos2d-x默认只支持win32的版本,win64的我测试link不行 我搭建使用的环境 windows10vs2019py2.7cmake3 从GitHub上clone源码https://github.com/cocos2d/cocos2d-x coco2d-x默认带了submodule,有协同子模块,最好是一起下载,搞个…

破解遗留系统快速重构的5步心法(附实例)

前两天和一个架构师朋友闲聊,说到了 「重构」 这个话题,他们公司早年间上线的项目系统,因一直没专人在演进过程中为代码质量负责,导致现在代码越来越混乱,逐渐堆积成“屎山”,目前的维护成本已远高于重新开…

ubuntu server系统树莓派安装mysql8.0开启远程访问

文章目录前言博客一、安装mysql8.0二、创建一个远程访问的新用户三、在MySQL配置文件中启用远程访问。四、navicat15连接mysql8.0返回10061chatgpt回复前言 百度了半天没解决,问了下chatgpt成功解决了…… 博客 一、安装mysql8.0 确认MySQL 8.0服务器已安装并正在…

恺望数据:解决智驾数据生产痛点,提供自动化生产线和规模化人力

最近Chat GPT引起了一个热点话题,就是人工智能是否真的可以替代人类工作,特别是在需要进行数据标注等需要人力的领域。 自动驾驶数据服务公司恺望数据在最近的一个会议上透露了一些消息,他们已经推出了一个基于自动化的数据生产系统&#xff…

uniapp 引入彩色symbol和 指令权限

uniapp 引入iconfont图标库彩色symbol 1,先去阿里巴巴矢量图标库登录 然后点击下载至本地 2.下载本地,然后解压文件夹 3.打开终端cmd命令窗口 npm安装全局包npm i -g iconfont-tools 4.终端切换到上面解压的文件夹里面,运行iconfont-too…

idea 中的 profiles 详解

profile 主要是为了解决不同环境所需的不同变量、配置等问题. profile 一般出现在两个地方:settings.xml,pom.xml 在 settings.xml 时,一般用来做仓库的选择(只使用 aliyun 仓库可以这样配置 settings.xml) 在 pom.xml 时,一般…

EM算法总结

目录 一。Jensen不等式:若f是凸函数 二。最大似然估计 三。二项分布的最大似然估计 四。进一步考察 1.按照MLE的过程分析 2.化简对数似然函数 3.参数估计的结论 4.符合直观想象 五。从直观理解猜测GMM的参数估计 1.问题:随机变量无法直接…

开发日记-lombok

开发日记-lombok环境问题解决方案:1 Data注解失效 无法正常生成 get和set方法2 RequiredArgsConstructor(onConstructor _(Lazy)) 符号_无法识别环境 idea2020.1lombok1.18.24jdk1.8 问题 Data注解失效 无法正常生成 get和set方法RequiredArgsConstructor(onCons…

C++——map和set的应用总结

目录1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用3.2 multiset3.2.1 multiset的介绍3.2.2 multiset的使用3.3 map3.3.1 map的介绍3.3.2 map的使用operator[]3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用3.5 map和set在OJ中的…

大学计算机基础 知识点总结

一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机:ENIAC,美国&#…

【TensorFlow 】查看Tensorflow和python对应版本、将现有的TensorFlow更新到指定的版本

1、查看Tensorflow和python对应版本 1.1这里我是在TensorFlow官方网址产看的 1、打开官方网址 https://pypi.org/project/tensorflow/1.1.0rc2/#files但是这个网址好像打不开,点击会出现这样 问题不大 输入Tensorflow然后点击搜索,就会跳转到https://p…

面试官:说说react的渲染过程

hello,这里是潇晨,大家在面试的过程中有没有遇到过一些和react相关的问题呢,比如面试官让你说说react渲染的过程,这到题目比较开放,也比较考验大家对react渲染原理以及源码的整体架构的理解。 整体流程: r…

Vue — 详解mixins混入使用

前言 当我们的项目越来越大,我们会发现组件之间可能存在很多相似的功能,你在一遍又一遍的复制粘贴相同的代码段(data,method,watch、mounted等),如果我们在每个组件中去重复定义这些属性和方法会…

DJI 无人机 Onboard SDK ROS 功能包demo运行

DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例 dji sdk 的节点…

接口服务熔断方案

一.熔断方式1.中间件支持熔断2.支持节点级熔断2.支持url前缀匹配二.配置1.延迟方式expression "LatencyAtQuantileMS(50.0) > 100"//50%延迟超过100ms2.失败率方式expression "NetworkErrorRatio() > 0.30" //失败率超过30%3.组合方式expression …

Python学习-----文件操作(读写定位篇)

目录 前言: 1.打开文件 (open) 关闭文件(close) 2.文件的读取(文件变量名 f) (1)整体读取(read) (2)读取一行(readline) (3)读…