C#에서 시간대 변환을 통한 날짜 형식 출력 예제

  • 3 minutes to read

이 문서에서는 C#을 사용하여 시간대를 변환하고 특정 형식으로 날짜와 시간을 출력하는 방법을 단계별로 설명합니다. 이 예제는 Visual Studio C# Interactive에서 테스트할 수 있도록 작성되었습니다.

단계 1: 필요한 네임스페이스 포함

시간대 변환 및 날짜 형식 출력을 위해 필요한 네임스페이스를 포함합니다.

using System;
using System.Globalization;

단계 2: 데이터 모델 생성

예제에서 사용할 간단한 데이터 모델을 생성합니다.

public class Document
{
    public DateTimeOffset? Created { get; set; }
    public string TenantName { get; set; }
}

단계 3: 시간대 변환 및 날짜 형식 출력 함수 작성

주어진 Created 날짜를 특정 시간대로 변환하고 지정된 형식으로 출력하는 함수를 작성합니다.

public static string GetFormattedDate(Document doc)
{
    DateTimeOffset createdDate = doc.Created ?? DateTimeOffset.MinValue;
    string formattedDate = createdDate.ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);

    if (doc.TenantName == "Milwaukee")
    {
        TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
        formattedDate = TimeZoneInfo.ConvertTime(createdDate, cstZone).ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
    }
    else
    {
        TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
        formattedDate = TimeZoneInfo.ConvertTime(createdDate, pstZone).ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
    }

    return formattedDate;
}

단계 4: 테스트 데이터 생성 및 함수 호출

작성한 함수를 테스트하기 위해 몇 가지 예제 데이터를 생성하고 함수를 호출합니다.

var documents = new[]
{
    new Document { Created = DateTimeOffset.UtcNow, TenantName = "Milwaukee" },
    new Document { Created = DateTimeOffset.UtcNow, TenantName = "OtherTenant" }
};

foreach (var doc in documents)
{
    string formattedDate = GetFormattedDate(doc);
    Console.WriteLine($"Tenant: {doc.TenantName}, Created: {formattedDate}");
}

전체 코드

이제 위의 모든 단계를 하나의 코드로 합쳐 봅니다.

using System;
using System.Globalization;

public class Document
{
    public DateTimeOffset? Created { get; set; }
    public string TenantName { get; set; }
}

public static class Program
{
    public static string GetFormattedDate(Document doc)
    {
        DateTimeOffset createdDate = doc.Created ?? DateTimeOffset.MinValue;
        string formattedDate = createdDate.ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);

        if (doc.TenantName == "Milwaukee")
        {
            TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
            formattedDate = TimeZoneInfo.ConvertTime(createdDate, cstZone).ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
        }
        else
        {
            TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
            formattedDate = TimeZoneInfo.ConvertTime(createdDate, pstZone).ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
        }

        return formattedDate;
    }

    public static void Main()
    {
        var documents = new[]
        {
            new Document { Created = DateTimeOffset.UtcNow, TenantName = "Milwaukee" },
            new Document { Created = DateTimeOffset.UtcNow, TenantName = "OtherTenant" }
        };

        foreach (var doc in documents)
        {
            string formattedDate = GetFormattedDate(doc);
            Console.WriteLine($"Tenant: {doc.TenantName}, Created: {formattedDate}");
        }
    }
}

Program.Main();

이 코드를 Visual Studio C# Interactive에서 실행하면 두 가지 다른 시간대에서 생성된 날짜가 각기 다른 형식으로 출력됩니다. Milwaukee 테넌트는 중앙 표준시(CST) 시간대로 변환되고, 다른 테넌트는 태평양 표준시(PST) 시간대로 변환됩니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com