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
}
}使用場(chǎng)景
- 跨時(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++通過Callback向C#傳遞數(shù)據(jù)的方法
下面小編就為大家分享一篇C++通過Callback向C#傳遞數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
C#安裝OpenCvSharp4的實(shí)現(xiàn)步驟
OpenCv是一款開源的圖像處理庫,本文就介紹了C#安裝OpenCvSharp4的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2022-05-05
Unity ScrollView實(shí)現(xiàn)無限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)無限循環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
基于C#編寫一個(gè)接受圖片流的OCR識(shí)別接口
這篇文章主要為大家詳細(xì)介紹了如何使用C#寫一個(gè)接受圖片流的OCR識(shí)別接口,以及測(cè)試用例調(diào)用接口,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03

