首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 日期時間處理全攻略:DateTime、TimeSpan 與運算實戰

     編輯:關於C#

日期時間處理是業務開發的高頻需求。C# 提供 DateTime(時間點)、TimeSpan(時間間隔)兩大核心結構,支援豐富的建構、格式化、運算與時區轉換功能。本文系統整理常用操作模式。

一、DateTime 建構與格式化

多樣化建構子

DateTime dt1 = new DateTime(2004, 10, 19);                    // 日期
DateTime dt2 = new DateTime(2004, 10, 19, 22, 47, 35);        // 日期+時間
DateTime dt3 = new DateTime(2004, 10, 19, 22, 47, 35, 259);   // 含毫秒

Console.WriteLine(dt1); // 2004/10/19 上午 12:00:00
Console.WriteLine(dt2); // 2004/10/19 下午 10:47:35
Console.WriteLine(dt3); // 2004/10/19 下午 10:47:35

自訂格式化輸出

string fmt = System.DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss");
Console.WriteLine(fmt); // 例: 2024-01-15-03-45-30

常用格式字元:yyyy年 MM月 dd日 HH24時 hh12時 mm分 ss秒 fff毫秒。

二、TimeSpan 時間間隔運算

建構與加減

TimeSpan oneWeek = new TimeSpan(4, 12, 0, 0) + new TimeSpan(2, 12, 0, 0);
// 4天12時 + 2天12時 = 7天

DateTime now = DateTime.Now;
DateTime past = now - oneWeek; // 7天前

Console.WriteLine(oneWeek.ToString()); // 7.00:00:00
Console.WriteLine(now.ToString());
Console.WriteLine(past.ToString());

TimeSpan 建構子參數:(days, hours, minutes, seconds),亦可傳入 ticks。

三、DateTime 加減運算

DateTime baseTime = DateTime.Now;
Console.WriteLine("現在: " + baseTime);
Console.WriteLine("+10年: " + baseTime.AddYears(10));
Console.WriteLine("+11月: " + baseTime.AddMonths(11));
Console.WriteLine("+7天: " + baseTime.AddDays(7));
Console.WriteLine("+12時: " + baseTime.AddHours(12));
Console.WriteLine("+30分: " + baseTime.AddMinutes(30));
Console.WriteLine("+45秒: " + baseTime.AddSeconds(45));
Console.WriteLine("+100毫秒: " + baseTime.AddMilliseconds(100));
Console.WriteLine("-1天: " + baseTime.AddDays(-1)); // 減法同樣適用

所有 AddXXX 方法回傳新 DateTime,原值不變(不可變結構)。

四、本地時間與 UTC 轉換

DateTime local = DateTime.Now;           // 本地時間
DateTime utc = DateTime.UtcNow;          // UTC 時間
DateTime utcFromLocal = local.ToUniversalTime();   // 本地轉 UTC
DateTime localFromUtc = utc.ToLocalTime();         // UTC 轉本地

// 指定種類
DateTime dt = new DateTime(2024,1,1,12,0,0, DateTimeKind.Utc);
Console.WriteLine(dt.Kind); // Utc

最佳實踐:資料庫儲存、跨系統傳輸統一使用 UTC;僅在 UI 顯示時轉為本地時間。

五、時間差計算

DateTime start = DateTime.Now;
// ... 執行某操作 ...
DateTime end = DateTime.Now;
TimeSpan elapsed = end - start;
Console.WriteLine($"耗時: {elapsed.TotalMilliseconds} ms");

六、解析與驗證

string input = "2024-01-15 14:30:00";
if (DateTime.TryParse(input, out DateTime result))
    Console.WriteLine("解析成功: " + result);
else
    Console.WriteLine("格式錯誤");

// 指定格式解析
DateTime exact = DateTime.ParseExact("15/01/2024", "dd/MM/yyyy", CultureInfo.InvariantCulture);

七、.NET 6+ 新增功能(補充)

  • DateOnly / TimeOnly:純日期/純時間類型,避免時區干擾
  • TimeZoneInfo 完整支援 IANA 時區資料庫
  • DateTime.UnixEpoch、DateTimeOffset.ToUnixTimeSeconds() 互轉

掌握 DateTime/TimeSpan 核心運算與格式化,能高效解決 90% 以上的業務時間處理需求。

DateTime 建構格式化 TimeSpan 運算 DateTime 加減運算
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved