C#時間操作

C#中時間操作相關方法


C# 中處理日期和時間

創建 DateTime 物件

DateTime 是一個結構體,定義於 System 命名空間中。創建 DateTime 物件的方法主要有以下幾種:

  1. 使用構造函數:可以通過指定年、月、日等訊息來創建一個 DateTime 物件。
    1
    DateTime dateTime = new DateTime(2015, 1, 1);
  2. 獲取當前時間:可以使用 DateTime.Now 來獲得當前的日期和時間。
    1
    DateTime now = DateTime.Now;
  3. 獲取今天的日期:若只需要日期部分,可以使用 DateTime.Today
    1
    DateTime today = DateTime.Today;

訪問 DateTime 的組件

創建了 DateTime 物件後,我們可以輕鬆地訪問其年、月、日、小時、分鐘等組件。

1
2
3
4
5
int year = now.Year;
int month = now.Month;
int day = now.Day;
int hour = now.Hour;
int minute = now.Minute;

修改 DateTime 物件

由於 DateTime 物件是不可變的,我們無法直接修改它。但是,我們可以使用 Add 系列的方法來獲得一個新的 DateTime 物件。

1
2
DateTime tomorrow = now.AddDays(1); // 加一天
DateTime yesterday = now.AddDays(-1); // 減一天

格式化 DateTime 物件

DateTime 提供了多種方法將日期和時間轉換為字串形式,以便於顯示或存儲。

  • 長日期和短日期格式:

    1
    2
    string longDateString = now.ToLongDateString();
    string shortDateString = now.ToShortDateString();
  • 長時間和短時間格式:

    1
    2
    string longTimeString = now.ToLongTimeString();
    string shortTimeString = now.ToShortTimeString();
  • 自定義格式:

    1
    string customFormat = now.ToString("yyyy-MM-dd HH:mm");

C# 中的 TimeSpan

創建 TimeSpan 物件

使用構造函數

1
TimeSpan timeSpan = new TimeSpan(1, 2, 3); // 1小時2分鐘3秒

如果不需要分鐘和秒,可以將它們設置為零:

1
TimeSpan timeSpan = new TimeSpan(1, 0, 0); // 1小時0分鐘0秒

使用靜態方法

為了提高可讀性,可以使用 TimeSpan 的靜態方法:

1
TimeSpan oneHour = TimeSpan.FromHours(1); // 1小時

使用 DateTime 減法

從兩個 DateTime 物件中減去一個,結果是一個 TimeSpan

1
2
3
DateTime start = DateTime.Now;
DateTime end = start.AddMinutes(2); // 加2分鐘
TimeSpan duration = end - start; // 結果是2分鐘

讀取 TimeSpan 屬性

TimeSpan 提供了一系列的屬性來獲取時間的各個部分:

1
2
int hours = timeSpan.Hours; // 小時
int minutes = timeSpan.Minutes; // 分鐘

同時,TimeSpan 提供了 Total 開頭的屬性來獲取完整的時間量:

1
double totalMinutes = timeSpan.TotalMinutes; // 總分鐘數

修改 TimeSpan

TimeSpan 是不可變的,但提供了 AddSubtract 方法來獲取新的 TimeSpan 物件:

1
2
TimeSpan added = timeSpan.Add(TimeSpan.FromMinutes(8)); // 加8分鐘
TimeSpan subtracted = timeSpan.Subtract(TimeSpan.FromMinutes(2)); // 減2分鐘

轉換為/從字串

TimeSpan 可以很容易地轉換為字串,也可以從字串解析:

1
2
string str = timeSpan.ToString(); // 轉換為字串
TimeSpan parsed = TimeSpan.Parse("01:02:03"); // 從字串解析