programing

날짜 시간을 동부 시간으로 변환하는 방법

css3 2023. 7. 19. 21:31

날짜 시간을 동부 시간으로 변환하는 방법

저는 금융 시장이 개방되었을 때 어떤 코드를 유발하는 애플리케이션을 만들려고 합니다.기본적으로 의사 코드:

if(9:30AM ET < Time.Now < 4:00PM ET) {//do something}

C#의 DateTime 개체를 사용하여 이 작업을 수행할 수 있는 방법이 있습니까?

사용해 보십시오.

var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);

TimeZoneInfo 클래스의 ConvertTime 메서드를 사용하여 지정된 DateTime을 Eastern 시간대로 변환하고 여기서 비교할 수 있습니다.

var timeToConvert = //whereever you're getting the time from
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);

확장 메서드를 만들 수 있습니다.

참고: 현재 날짜 시간을 EST로 변환합니다.

이것처럼.

    using System;
    using System.Runtime.InteropServices;

    public static DateTime ConvertToEasternTime(this DateTime value)
    {
        TimeZoneInfo tz = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
            ? TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
            : TimeZoneInfo.FindSystemTimeZoneById("America/New_York");

        return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
    }

그리고 이렇게 사용할 수 있습니다.

EasternTime = DateTime.Now.ConvertToEasternTime(),

이 메서드를 사용하려면 네임스페이스를 가져오는지 확인하십시오.

참고: 아래의 이 접근 방식은 주어진 DateTime을 EST로 변환하는 것입니다.

    private static TimeZoneInfo GetEasternTimeZoneInfo()
    {
        TimeZoneInfo tz = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
           ? TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
           : TimeZoneInfo.FindSystemTimeZoneById("America/New_York");

        return tz;
    }

위의 방법은 EST 시간대를 반환합니다.

    public static DateTime ConvertToEasternTime(DateTime date)
    {
        return TimeZoneInfo.ConvertTimeFromUtc(date, GetEasternTimeZoneInfo());
    }

위의 방법은 매개 변수로 전달한 날짜를 EST 시간으로 반환합니다.

우리가 할 수 있는 위의 방법을 사용하기 위해,

     var convertToEST= DateUtility.ConvertToEasternTime(date);

우리는 통과할 필요가 있습니다.date전환해야 할 논거로가끔은 우리가 해야 할 수도 있지만,

     var convertToEST= DateUtility.ConvertToEasternTime(date).Date;

이 메서드를 사용하려면 네임스페이스를 가져오는지 확인하십시오.

당신은 논리를 둘로 나눌 필요가 있습니다.

  • 날짜가 시작 날짜보다 큰지 확인합니다.startTime > now
  • 날짜가 종료 날짜보다 작은지 확인합니다.endTime < now

날짜 범위의 경우 논리는 두 가지를 모두 만족해야 합니다(논리적 AND,&&).

DateTime startTime = DateTime.Today.AddHours(9).AddMinutes(30);
DateTime endTime = DateTime.Today.AddHours(12+4);
DateTime now = DateTime.Now;
if(startTime > now && endTime < now) {
    // do something
}

만약 당신이 ET 시간대에 있다면 그것은 잘 작동할 것이지만, 그렇지 않다면 당신은 약간의 시간대 조작을 해야 합니다.다른 답변을 확인합니다.

언급URL : https://stackoverflow.com/questions/5997570/how-to-convert-datetime-to-eastern-time