문제

알았어 - 조금 한 입.그래서 내가 가진 문제는 이것이다. 만료 날짜를 저장해야 하는 곳 오직 날짜 부분이 필요하며 시간대 변환을 원하지 않습니다.예를 들어 만료 날짜를 "2008년 3월 8일"로 설정한 경우 시간대에 관계없이 모든 클라이언트에게 해당 값이 반환되기를 원합니다.DateTime으로 원격을 제거하는 문제는 "2008 년 3 월 8 일 00:00"으로 저장/전송된다는 것입니다. 이는 내 서쪽의 시간대에서 연결하는 고객이 변환되어 "2008 년 3 월 7 월"으로 뒤집 힙니다. 이 시나리오를 깨끗하게 처리하려면?분명히 문자열로 보내면 작동합니다.다른 건 없어?고마워, 이안

도움이 되었습니까?

해결책

다음과 같이 원하는/필요한 세부 정보에 대한 액세스를 제공하는 구조체 날짜를 만들 수 있습니다.

public struct Date
{
    public int Month; //or string instead of int
    public int Day;
    public int Year;
}

이것은 가볍고 유연하며 완전한 제어를 제공합니다.

다른 팁

어떤 원격 기술을 언급하고 있는지 잘 모르겠지만 현재는 DateTime을 xs:DateTime으로 직렬화하는 것만 지원하는 WCF의 실제 문제입니다. 시간대에 관심이 없는 날짜 전용 값에는 적합하지 않습니다.

.NET 3.5에는 시간대 간에 DateTime을 전송하는 데 유용하지만 날짜 전용 시나리오에는 도움이 되지 않는 새로운 DateTimeOffset 유형이 도입되었습니다.

이상적으로 WCF는 여기에 요청된 대로 날짜를 직렬화하기 위해 xs:Date를 선택적으로 지원해야 합니다.

http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=349215

나는 이것을 이렇게 한다:날짜가 메모리에 있거나 파일에 저장될 때마다 항상 UTC의 DateTime에 있습니다.사용자에게 날짜를 표시하면 항상 문자열입니다.문자열과 DateTime 사이를 변환할 때 시간대 변환도 수행합니다.

이렇게 하면 논리에서 시간대를 처리할 필요가 없고 프레젠테이션에서만 처리할 수 있습니다.

UTC 시간으로 보낼 수 있습니다.

dateTime1.ToUniversalTime()

타임스탬프 문자열로 보내는 것이 가장 빠르고 쉬운 방법이라고 생각합니다. 비록 로케일에서 시간 변환이 발생하지 않도록 강제할 수도 있지만 말입니다.

과거에 앱에서 이 문제를 처리한 가장 쉬운 방법은 날짜를 yyyy-mm-dd 형식의 문자열로 저장하는 것입니다.모호하지 않으며 자동으로 번역되지 않습니다.

응, 괴로워...

문자열로 보낸 다음 필요에 따라 다시 날짜 유형으로 변환하는 것이 어떻습니까?이렇게 하면 다른 시간대에 걸쳐 변환되지 않습니다.간단하게 유지하세요.

편집하다:나는 Struct 아이디어를 좋아하고 좋은 기능을 허용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top