C# 時(shí)間和日期的處理方法
時(shí)間和日期的核心概念
1. UTC 和 本地時(shí)間
UTC(Coordinated Universal Time):
- 是一種不受時(shí)區(qū)影響的世界標(biāo)準(zhǔn)時(shí)間。
- 在網(wǎng)絡(luò)通信和全球協(xié)作中,用于統(tǒng)一時(shí)間度量
本地時(shí)間(Local Time):
- 是根據(jù)所在時(shí)區(qū)調(diào)節(jié)后的時(shí)間。
- 反映本地的時(shí)間差異,比如夏令時(shí)、時(shí)區(qū)偏移等。
2. UTC 和本地時(shí)間的區(qū)別
- UTC是統(tǒng)一的,不隨地理位置變化。
- 本地時(shí)間因時(shí)區(qū)不同而改變,需要考慮時(shí)區(qū)偏移。
- 在編程中,通常存儲(chǔ)和處理數(shù)據(jù)時(shí)使用UTC,而在用戶交互時(shí)轉(zhuǎn)換為本地時(shí)間。
常用日期和時(shí)間類
1. DateTime
- 定義:DateTime是用于表示時(shí)間點(diǎn)的結(jié)構(gòu),包含日期和時(shí)間信息。
- 屬性:
- DateTime.Now:獲取當(dāng)前本地時(shí)間。
- DateTime.UtcNow:獲取當(dāng)前UTC時(shí)間。
- DateTime.Today:獲取當(dāng)前日期,時(shí)間部分為午夜。
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:43
Console.WriteLine($"UTC Now: {utcNow}"); //UTC Now: 2025/6/4 6:05:43
Console.WriteLine($"Today: {today}"); //Today: 2025/6/4 0:00:00
}
}2. TimeSpan 定義:
- 定義:TimeSpan表示一個(gè)時(shí)間間隔或持續(xù)時(shí)間。
- 屬性和方法:
- TimeSpan.FromDays(double days):創(chuàng)建代表指定天數(shù)的TimeSpan。
- TimeSpan.FromHours(double hours):創(chuàng)建代表指定小時(shí)的TimeSpan。
- TimeSpan.TotalSeconds:獲取時(shí)間間隔的總秒數(shù)。
using System;
class Program
{
static void Main()
{
TimeSpan duration = new TimeSpan(1, 2, 30); // 1 hour, 2 minutes, 30 seconds
Console.WriteLine($"Duration: {duration}"); //Duration: 01:02:30
TimeSpan 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 用于表示日期和時(shí)間,同時(shí)包含與 UTC(協(xié)調(diào)世界時(shí))的偏移量.
- 屬性:
- DateTimeOffset.Now:獲取當(dāng)前本地時(shí)間和偏移。
- DateTimeOffset.UtcNow:獲取當(dāng)前 UTC 時(shí)間。
using System;
class Program
{
static void Main()
{
// 獲取當(dāng)前時(shí)間的 Unix 時(shí)間戳(秒)
long unixTimestampInSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
Console.WriteLine($"Unix 時(shí)間戳(秒):{unixTimestampInSeconds}");
// 獲取當(dāng)前時(shí)間的 Unix 時(shí)間戳(毫秒)
long unixTimestampInMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Console.WriteLine($"Unix 時(shí)間戳(毫秒):{unixTimestampInMilliseconds}");
}
}日期和時(shí)間的格式化
使用DateTime.ToString方法和格式字符串自定義日期和時(shí)間的輸出。
常見格式字符串:
- "yyyy-MM-dd":四位年份-兩位月份-兩位日期。
- "HH:mm:ss":24小時(shí)制的時(shí)間。
- "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-04
Console.WriteLine($"Formatted Time: {formattedTime}"); //Formatted Time: 14:12:14
Console.WriteLine($"Full Date: {fullDate}"); //Full Date: 星期三, 04 六月 2025
}
}使用場景
- 跨時(shí)區(qū)應(yīng)用:
- 使用UTC存儲(chǔ)時(shí)間,確保一致性,然后在用戶界面顯示時(shí)轉(zhuǎn)換為本地時(shí)間。
- 2.定時(shí)任務(wù)和調(diào)度:
- 使用TimeSpan計(jì)算時(shí)間間隔,安排任務(wù)執(zhí)行。
- 3.日志記錄:
- 使用UTC時(shí)間記錄日志,確保在各種時(shí)區(qū)下時(shí)間記錄的準(zhǔn)確性。
通過理解這些日期和時(shí)間處理的概念和類,您可以有效地管理時(shí)間相關(guān)的數(shù)據(jù)和邏輯。如果有任何問題或者需要進(jìn)一步指導(dǎo),請(qǐng)隨時(shí)告訴我!
到此這篇關(guān)于C# 時(shí)間和日期的處理的文章就介紹到這了,更多相關(guān)C# 時(shí)間和日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間
- C#日期時(shí)間類的使用方法(DateTime類、TimeSpan類與DateTimeOffset類)
- C#使用DateTime獲取日期和時(shí)間的實(shí)現(xiàn)
- C#中的日期時(shí)間比較和格式化的方法
- C# string格式的日期時(shí)間字符串轉(zhuǎn)為DateTime類型的方法
- c#的時(shí)間日期操作示例分享(c#獲取當(dāng)前日期)
- C#中日期時(shí)間的簡單操作
- C# 常用日期時(shí)間函數(shù)(老用不熟)
相關(guān)文章
C# LiteDB處理時(shí)間序列數(shù)據(jù)的高性能解決方案
LiteDB作為.NET生態(tài)下的輕量級(jí)嵌入式NoSQL數(shù)據(jù)庫,一直是時(shí)間序列處理的優(yōu)選方案,本文將為大家大家簡單介紹一下LiteDB處理時(shí)間序列數(shù)據(jù)的高性能解決方案,希望對(duì)大家有所幫助2025-08-08
C#使用Spire.Doc解決Word轉(zhuǎn)PDF亂碼/錯(cuò)位的方案
在日常開發(fā)中,Word轉(zhuǎn)PDF的功能需求十分常見,但實(shí)現(xiàn)過程中往往會(huì)遇到一些棘手的挑戰(zhàn),無論是系統(tǒng)自動(dòng)生成的報(bào)告,還是用戶上傳的文檔,轉(zhuǎn)換后出現(xiàn)亂碼、排版錯(cuò)位等問題,所以本文給大家介紹了如何使用Spire.Doc完美解決Word轉(zhuǎn)PDF亂碼/錯(cuò)位問題,需要的朋友可以參考下2025-09-09
Unity利用XML制作一個(gè)簡易的登錄系統(tǒng)
這篇文章主要介紹了如何在Unity中利用XML文件制作一個(gè)簡易的登錄系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-03-03
C#利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了C#潤滑利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-07-07
利用C#實(shí)現(xiàn)Word信息自動(dòng)化提取功能
在現(xiàn)代企業(yè)和個(gè)人工作中,Word文檔作為信息承載和交流的核心載體,其重要性不言而喻,本文旨在深入探討如何利用C#語言,結(jié)合強(qiáng)大的第三方庫,高效、專業(yè)地讀取Word文檔的內(nèi)置屬性和自定義屬性,為您的.NET開發(fā)項(xiàng)目提供一份全面的技術(shù)指南,需要的朋友可以參考下2025-12-12

