C#开发——日期操作类DateTime

news2025/3/4 21:25:56

在C#中,日期和时间的操作主要通过  System.DateTime  类来实现。  DateTime  提供了丰富的属性和法,用于处理日期和时间的创建、格式化、比较和计算等操作。以下是一些常用的日期函数和特性:

一、创建日期和时间

1、直接指定日期和时间:

DateTime now = DateTime.Now; // 获取当前日期和时间
DateTime today = DateTime.Today; // 获取当前日期(时间部分为00:00:00)
DateTime specificDate = new DateTime(2025, 2, 26, 14, 30, 0); // 指定具体日期和时间

2、从字符串解析日期和时间:

DateTime parsedDate = DateTime.Parse("2025-02-26 14:30:00"); // 从标准格式字符串解析
DateTime parsedDateWithFormat = DateTime.ParseExact("26/02/2025 14:30", "dd/MM/yyyy HH:mm", null); // 使用自定义格式解析

二、获取日期和时间的组成部分

DateTime  提供了多个只读属性,用于获取日期和时间的各个部分:

  1. Year  :获取年份。
  2. Month  :获取月份(1-12)。
  3. Day  :获取日期(1-31)。
  4. Hour  :获取小时(0-23)。
  5. Minute  :获取分钟(0-59)。
  6. Second  :获取秒(0-59)。

示例:

DateTime now = DateTime.Now;
Console.WriteLine($"Year: {now.Year}, Month: {now.Month}, Day: {now.Day}");
Console.WriteLine($"Hour: {now.Hour}, Minute: {now.Minute}, Second: {now.Second}");

三、日期和时间的计算

1、加减日期和时间:

DateTime now = DateTime.Now;
DateTime tomorrow = now.AddDays(1); // 加1天
DateTime yesterday = now.AddDays(-1); // 减1天
DateTime nextWeek = now.AddWeeks(1); // 加1周(需要扩展方法)
DateTime nextHour = now.AddHours(1); // 加1小时

2、计算两个日期之间的差异:

DateTime date1 = new DateTime(2025, 2, 26);
DateTime date2 = new DateTime(2025, 3, 1);
TimeSpan difference = date2 - date1; // 返回TimeSpan对象
Console.WriteLine($"Days: {difference.Days}, Hours: {difference.Hours}");

四、格式化日期和时间

1、标准格式化:

DateTime now = DateTime.Now;
string formattedDate = now.ToString("yyyy-MM-dd HH:mm:ss"); // 自定义格式
string shortDate = now.ToShortDateString(); // 短日期格式(如:2025/02/26)
string longDate = now.ToLongDateString(); // 长日期格式(如:2025年2月26日)

2、自定义格式化:

string customFormat = now.ToString("dd/MM/yyyy HH:mm:ss tt"); // 自定义格式(如:26/02/2025 14:30:00 PM)

五、比较日期和时间

1、比较两个日期:

DateTime date1 = new DateTime(2025, 2, 26);
DateTime date2 = new DateTime(2025, 3, 1);

if (date1 < date2)
{
    Console.WriteLine("date1 is earlier than date2");
}
else if (date1 > date2)
{
    Console.WriteLine("date1 is later than date2");
}
else
{
    Console.WriteLine("date1 is the same as date2");
}

2、判断日期范围:

DateTime start = new DateTime(2025, 2, 1);
DateTime end = new DateTime(2025, 2, 28);
DateTime testDate = new DateTime(2025, 2, 15);

if (testDate >= start && testDate <= end)
{
    Console.WriteLine("testDate is within the range");
}

六、其他常用方法

1、判断是否为闰年:

bool isLeapYear = DateTime.IsLeapYear(2024); // 返回true

2、获取星期几:

DateTime now = DateTime.Now;
string dayOfWeek = now.DayOfWeek.ToString(); // 返回星期几(如:星期三)

七、扩展方法

C#允许通过扩展方法为  DateTime  添加自定义功能。例如,添加一个  AddWeeks  方法:

public static class DateTimeExtensions
{
    public static DateTime AddWeeks(this DateTime date, int weeks)
    {
        return date.AddDays(weeks * 7);
    }
}

// 使用
DateTime now = DateTime.Now;
DateTime nextMonth = now.AddWeeks(4);

总结

System.DateTime  是C#中处理日期和时间的核心结构,提供了丰富的功能,满足大多数日期和时间操作的需求。通过结合  DateTime  和  TimeSpan  ,可以轻松实现日期计算、格式化和比较等操作。

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

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

相关文章

win32汇编环境,窗口程序中使控件子类化的示例一

;运行效果 ;win32汇编环境,窗口程序中使编辑框控件子类化的示例一 ;窗口子类化&#xff0c;就是把某种控件&#xff0c;自已再打造一遍&#xff0c;加入自已的功能。比如弄个特殊形状的按钮&#xff0c;或只能输入特殊字符的编辑框 ;当然&#xff0c;一般来说&#xff0c;这都是…

多镜头视频生成、机器人抓取、扩散模型个性化 | Big Model weekly第58期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介绍了一种名为GLM-4-Voice的智能且类人化的端到端语音聊天机器人。它支持中文和英文&#xff0c;能够进行实时语音对话&a…

第十四届蓝桥杯:(二分算法)字串简写

这道题我们的做法是开两个vector&#xff0c;分别把a和b字符的下标存进去&#xff0c;然后遍历a字符&#xff0c;我们要求长度必须大于等于k&#xff0c;我们可以画个图&#xff0c;也就是说b的下标减a的下标必须大于等于k-1 也就是b的下标必须大于等于a的下标k-1 我们用二分找…

制服小程序的“滑手”:禁用页面左右滑动全攻略

哈哈&#xff0c;看来你已经很聪明地发现了小程序中左右滑动的“顽皮”行为&#xff01;&#x1f604; 没错&#xff0c;我们可以通过设置 disableScroll 属性来“管教”它&#xff0c;同时结合 CSS 样式让页面既禁得住横向“乱跑”&#xff0c;又能顺畅地上下滚动。你的方案已…

webstorm的Live Edit插件配合chrome扩展程序JetBrains IDE Support实现实时预览html效果

前言 我们平时在前端网页修改好代码要点击刷新再去看修改的效果&#xff0c;这样比较麻烦&#xff0c;那么很多软件都提供了实时预览的功能&#xff0c;我们一边编辑代码一边可以看到效果。下面说的是webstorm。 1 Live Edit 首先我们需要在webstorm的settings里安装插件Live …

02 HarmonyOS Next仪表盘案例详解(一):基础篇

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 1. 项目概述2. 技术架构2.1 文件结构2.2 ArkTS 语言特性装饰器的使用 3. 数据结构设计3.1 接口定义3.2 数据初始化 4. 生命周期与页面路由…

张岳教授:语言模型推理与泛化研究 | ICLR 2025 特邀报告与团队专场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; AITIME 01 ICLR 2025预讲会特邀报告 AITIME 02 ICLR 2025预讲会西湖大学张岳老师实验室专场 01 AI生成文本的自动化检测 Glimpse: Enabling White-Box Methods to Use Proprietary Models for Zero-Shot LLM-Ge…

离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用

离散傅里叶变换&#xff08;DFT&#xff09;及其在图像处理中的应用 什么是离散傅里叶变换&#xff1f; 离散傅里叶变换&#xff08;Discrete Fourier Transform, DFT&#xff09;是一种强大的数学工具&#xff0c;用于将离散信号从时域&#xff08;或空间域&#xff09;转换…

记一次误禁用USB导致键盘鼠标失灵的修复过程

背景说明 在电脑上插入了一个USB hub&#xff0c;然后弹窗提示&#xff1a;“集线器端口上出现电涌”&#xff0c;点开让选择“重置”或者“关闭”&#xff0c;不小心点了关闭&#xff0c;结果这个usb口就被关了&#xff0c;再插任何东西都没反应&#xff0c;找了很多办法都恢…

Apache nifi demo 实验

Apache nifi 是个数据流系统&#xff0c;可以通过配置 自定义的流程来实现数据的转换。 比如可以配置一个流程&#xff0c;读取数据库里的数据&#xff0c;再转换&#xff0c;最后保存到本地文件。 这样可以来实现一些数据转换的操作&#xff0c;而不用特地编写程序来导入导出。…

Leetcode 57-插入区间

给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一个区间的开始和…

SpringCloud之Eureka、Ribbon、OpenFeign

目录1. SpringCloud Eureka&#xff08;服务注册与发现组件&#xff09;2. SpringCloud Ribbon&#xff08;负载均衡与服务调用组件&#xff09;3. SpringCloud OpenFeign&#xff08;负载均衡与服务调用组件&#xff09;SpringCloud&#xff1a;用于开发高度可扩展、高性能的分…

如何在MacOS 10.15上安装Docker Desktop

前文提到MacOS 10.15上无法通过Homebrew安装最新版本的docker&#xff0c;自然想到了去安装更早版本的docker。在MacOS上安装Docker Desktop比安装Docker Engine要更方便一些&#xff0c;具体原因可以自己搜索。通过Docker Desktop的Release notes得知最后一个支持MacOS 10.15的…

Moticon智能鞋垫传感器OpenGo:经济实用的运动科学研究与临床评估工具

Moticon智能鞋垫传感器OpenGo是运动科学研究领域的一款高性能工具&#xff0c;其无线设计和精准传感器为步态分析、平衡评估以及疾病诊断提供了稳定的数据支持。通过实时捕捉足底压力分布、动态变化及平衡状态&#xff0c;OpenGo 为研究人员和临床医生提供了深入洞察个体运动模…

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第一天)

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线&#xff08;第一天&#xff09; 前言最后 前言 说真的&#xff0c;用Unity工作这几年&#xff0c;经历的项目大大小小&#xff0c;对于场景的渲染算是有一定的经验&#xff0c;但涉及到HDRP高清渲染管线的了解&#xff0…

nlp第十节——LLM相关

一、模型蒸馏技术 本质上是从一个大模型蒸馏出小模型&#xff0c;从小模型训练出来的概率分布&#xff08;如自回归模型预测下一个字的概率分布&#xff09;分别与大模型预测的概率分布和ground label求loss。与大模型预测的概率分布用KL散度求loss&#xff0c;与ground label用…

Flutter管理项目实战

目录&#xff1a; 1、项目的构建和介绍 1、项目的构建和介绍 登录官网下载flutter的zip压缩包&#xff0c;解压到某个文件夹下即可&#xff0c;里面自带sdk的文件&#xff0c;无需再下载&#xff1b;创建项目时选定flutter的sdk的路径即可创建项目完成。 后续待完善&#xff0…

UniApp 中封装 HTTP 请求与 Token 管理(附Demo)

目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习&#xff0c;上述实战代码来源&#xff1a;芋道源码/yudao-mall-uniapp 该代码中&#xff0c;通过自定义 request 函数对 HTTP 请求进行了统一管理&#xff0c;并且结合了 Token 认证机制 请求封装原理&#xff…

基于开源库编写MQTT通讯

目录 1. MQTT是什么&#xff1f;2. 开发交互UI3. 服务器核心代码4. 客户端核心代码5. 消息订阅与发布6. 通讯测试7. MQTT与PLC通讯最后. 核心总结 1. MQTT是什么&#xff1f; MQTT&#xff08;Message Queuing Terlemetry Transport&#xff09;消息队列遥测协议&#xff1b;是…

基于springboot+vue美食与健康分享推广网站

目录 项目介绍 图片展示 运行环境 项目介绍 管理员&#xff1a; 个人中心&#xff1a;修改个人信息、修改密码 美食分类管理&#xff1a;增删改查美食分类 商品分类管理&#xff1a;增删改查商品分类 热门美事管理&#xff1a;增删改查热门美食、以及查看评论、预览视频 在线…