Định dạng chuỗi cho TimeSpan (Trích dẫn)

Đã 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"

Thẻ: C# .NET Định dạng TimeSpan

Đăng vào ngày 15 tháng 9 lúc 23:17