날짜 시간을 동부 시간으로 변환하는 방법
저는 금융 시장이 개방되었을 때 어떤 코드를 유발하는 애플리케이션을 만들려고 합니다.기본적으로 의사 코드:
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
'programing' 카테고리의 다른 글
연결 풀을 안전하게 래핑 (0) | 2023.07.19 |
---|---|
Visual Studio 코드: 컴파일 형식 스크립트 모듈 (0) | 2023.07.19 |
Oracle에서 CTE 생성 (0) | 2023.07.19 |
setup() 메서드 내의 배열(반복())에 액세스하고 싶습니다. (0) | 2023.07.19 |
스프링 부츠는 "템플릿"을 제공합니다.입력 예외:jar에서 실행할 때 "템플릿 확인 중 오류 발생" (0) | 2023.07.19 |