Đã từng sử dụng DateTime nhưng ít dùng TimeSpan, hôm nay gặp phải trường hợp cần định dạng TimeSpan nên phải tìm hiểu lại. Dưới đây là tổng hợp cách sử dụng từ tài liệu Microsoft.
Chuyển đổi TimeSpan thành chuỗi
using System;
public class ThoiGianDemo
{
public static void ChayChuongTrinh()
{
TimeSpan thoiGian = new TimeSpan(1, 12, 23, 62);
string ketQua;
ketQua = "Thời gian di chuyển: " + thoiGian.ToString("%d") + " ngày";
Console.WriteLine(ketQua);
ketQua = "Thời gian di chuyển: " + thoiGian.ToString(@"dd\.hh\:mm\:ss");
Console.WriteLine(ketQua);
Console.WriteLine(string.Format("Thời gian di chuyển: {0:%d} ngày", thoiGian));
Console.WriteLine(string.Format("Thời gian di chuyển: {0:dd\\.hh\\:mm\\:ss} ngày", thoiGian));
}
}
// Kết quả:
// Thời gian di chuyển: 1 ngày
// Thời gian di chuyển: 01.12:24:02
// Thời gian di chuyển: 1 ngày
// Thời gian di chuyển: 01.12:24:02 ngày
Chuyển đổi chuỗi thành TimeSpan
using System;
public class ThoiGianDemo
{
public static void ChayChuongTrinh()
{
string giaTri;
TimeSpan khoangThoiGian;
giaTri = "6";
if (TimeSpan.TryParseExact(giaTri, "%d", null, out khoangThoiGian))
Console.WriteLine($"{giaTri} --> {khoangThoiGian}");
else
Console.WriteLine($"Không thể phân tích '{giaTri}'");
giaTri = "16:32.05";
if (TimeSpan.TryParseExact(giaTri, @"mm\:ss\.ff", null, out khoangThoiGian))
Console.WriteLine($"{giaTri} --> {khoangThoiGian}");
else
Console.WriteLine($"Không thể phân tích '{giaTri}'");
giaTri= "12.035";
if (TimeSpan.TryParseExact(giaTri, "ss\\.fff", null, out khoangThoiGian))
Console.WriteLine($"{giaTri} --> {khoangThoiGian}");
else
Console.WriteLine($"Không thể phân tích '{giaTri}'");
}
}
// Kết quả:
// 6 --> 6.00:00:00
// 16:32.05 --> 00:16:32.0500000
// 12.035 --> 00:00:12.0350000
Bảng ký tự định dạng
| Ký tự định dạng | Mô tả | Ví dụ |
|---|---|---|
| "d", "%d" | Số ngày nguyên trong khoảng thời gian | new TimeSpan(6,14,32,17,685): %d → "6" |
| "dd"-"dddddddd" | Số ngày với số 0 phía trước nếu cần | new TimeSpan(6,14,32,17,685): ddd → "006" |
| "h", "%h" | Số giờ không tính ngày (không có số 0) | new TimeSpan(6,14,32,17,685): %h → "14" |
| "hh" | Số giờ với số 0 phía trước | new TimeSpan(6,8,32,17,685): hh → "08" |
| "m", "%m" | Số phút không tính giờ/ngày | new TimeSpan(6,14,8,17,685): %m → "8" |
| "mm" | Số phút với số 0 phía trước | new TimeSpan(6,8,5,17,685): mm → "08" |
| "s", "%s" | Số giây không tính phút/giờ/ngày | TimeSpan.FromSeconds(12.965): %s → "12" |
| "ss" | Số giây với số 0 phía trước | TimeSpan.FromSeconds(6.965): ss → "06" |
| "f", "%f" | Phần mười giây | TimeSpan.FromSeconds(6.895): f → "8" |
| "ff" | Phần trăm giây | TimeSpan.FromSeconds(6.895): ff → "89" |
| "fff" | Milli giây | TimeSpan.FromSeconds(6.895): fff → "895" |
| "\\\"string\\\"" | Xuất chuỗi thô | new TimeSpan(14,32,17): hh':'mm':'ss → "14:32:17" |
| "\\\"\\\"" | Ký tự trốn | new TimeSpan(14,32,17): hh\\:mm\\:ss → "14:32:17" |