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

C#学习第27天:时间和日期的处理

时间和日期的核心概念


1. UTC 和 本地时间

  • UTC(Coordinated Universal Time):

    • 是一种不受时区影响的世界标准时间。
    • 在网络通信和全球协作中,用于统一时间度量
  • 本地时间(Local Time): 

    • 是根据所在时区调节后的时间。
    • 反映本地的时间差异,比如夏令时、时区偏移等。

2. UTC 和本地时间的区别

  • UTC是统一的,不随地理位置变化。
  • 本地时间因时区不同而改变,需要考虑时区偏移。
  • 在编程中,通常存储和处理数据时使用UTC,而在用户交互时转换为本地时间。

 常用日期和时间类


1. DateTime

  • 定义:DateTime是用于表示时间点的结构,包含日期和时间信息。
  • 属性:
    • DateTime.Now:获取当前本地时间。
    • DateTime.UtcNow:获取当前UTC时间。
    • DateTime.Today:获取当前日期,时间部分为午夜。
using System;class Program
{static void Main(){DateTime now = DateTime.Now;DateTime utcNow = DateTime.UtcNow;DateTime today = DateTime.Today;Console.WriteLine($"Local Now: {now}");    //Local Now: 2025/6/4 14:05:43Console.WriteLine($"UTC Now: {utcNow}");   //UTC Now: 2025/6/4 6:05:43Console.WriteLine($"Today: {today}");      //Today: 2025/6/4 0:00:00}
}

2. TimeSpan

  • 定义:TimeSpan表示一个时间间隔或持续时间。
  • 属性和方法:
    • TimeSpan.FromDays(double days):创建代表指定天数的TimeSpan。
    • TimeSpan.FromHours(double hours):创建代表指定小时的TimeSpan。
    • TimeSpan.TotalSeconds:获取时间间隔的总秒数。
  • using System;class Program
    {static void Main(){TimeSpan duration = new TimeSpan(1, 2, 30); // 1 hour, 2 minutes, 30 secondsConsole.WriteLine($"Duration: {duration}");  //Duration: 01:02:30TimeSpan fromHours = TimeSpan.FromHours(5.5);Console.WriteLine($"5.5 Hours in Total Minutes: {fromHours.TotalMinutes}");//5.5 Hours in Total Minutes: 330}
    }
    

3.DateTimeOffset 

  • 定义:DateTimeOffset 用于表示日期和时间,同时包含与 UTC(协调世界时)的偏移量.
  • 属性:
    • DateTimeOffset.Now:获取当前本地时间和偏移。
    • DateTimeOffset.UtcNow:获取当前 UTC 时间。
using System;class Program
{static void Main(){// 获取当前时间的 Unix 时间戳(秒)long unixTimestampInSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();Console.WriteLine($"Unix 时间戳(秒):{unixTimestampInSeconds}");// 获取当前时间的 Unix 时间戳(毫秒)long unixTimestampInMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();Console.WriteLine($"Unix 时间戳(毫秒):{unixTimestampInMilliseconds}");}
}

日期和时间的格式化


使用DateTime.ToString方法和格式字符串自定义日期和时间的输出。

常见格式字符串:

  • "yyyy-MM-dd":四位年份-两位月份-两位日期。
  • "HH:mm:ss":24小时制的时间。
  • "dddd, dd MMMM yyyy":星期几, 天 月份 年份。
using System;class Program
{static void Main(){DateTime now = DateTime.Now;string formattedDate = now.ToString("yyyy-MM-dd");string formattedTime = now.ToString("HH:mm:ss");string fullDate = now.ToString("dddd, dd MMMM yyyy");Console.WriteLine($"Formatted Date: {formattedDate}"); //Formatted Date: 2025-06-04Console.WriteLine($"Formatted Time: {formattedTime}"); //Formatted Time: 14:12:14Console.WriteLine($"Full Date: {fullDate}"); //Full Date: 星期三, 04 六月 2025}
}

使用场景


  • 1.跨时区应用:
    • 使用UTC存储时间,确保一致性,然后在用户界面显示时转换为本地时间。
  • 2.定时任务和调度:
    • 使用TimeSpan计算时间间隔,安排任务执行。
  • 3.日志记录:
    • 使用UTC时间记录日志,确保在各种时区下时间记录的准确性。

通过理解这些日期和时间处理的概念和类,您可以有效地管理时间相关的数据和逻辑。如果有任何问题或者需要进一步指导,请随时告诉我! 

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

相关文章:

  • 编程技能:格式化打印05,格式控制符
  • MPLAB X IDE ​软件安装与卸载
  • windows编程实现文件拷贝
  • [6-01-01].第12节:字节码文件内容 - 属性表集合
  • 基于机器学习的水量智能调度研究
  • 深度解码:我如何用“结构进化型交互学习方法”与AI共舞,从学习小白到构建复杂认知体系
  • 深入浅出 Scrapy:打造高效、强大的 Python 网络爬虫
  • ES6 Promise 状态机
  • Axure 与 Cursor 集成实现方案
  • 汽车加气站操作工证考试重点
  • 贪心算法应用:带权任务间隔调度问题详解
  • 用电脑控制keysight示波器
  • LLaMA-Factory - 批量推理(inference)的脚本
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • Ansible 剧本精粹 - 编写你的第一个 Playbook
  • 【Elasticsearch】Elasticsearch 核心技术(二):映射
  • 【计算机网络】网络层协议
  • .NET Core接口IServiceProvider
  • 结构型设计模式之Proxy(代理)
  • 案例分享--汽车制动卡钳DIC测量
  • Redis Set集合命令、内部编码及应用场景(详细)
  • C++算法动态规划1
  • 【快速预览经典深度学习模型:CNN、RNN、LSTM、Transformer、ViT全解析!】
  • KaiwuDB在边缘计算领域的应用与优势
  • 如何避免二极管过载?
  • Vue.js组件开发系统性指南
  • React---day9
  • 设计模式 - 模板方法模式
  • 鸿蒙开发List滑动每项标题切换悬停
  • ubuntu开机自动挂载windows下的硬盘