2012-02-14 3 views
0

내가 작업하고있는 iPhone 채팅 앱의 경우, 모든 시간대 문제를 처리하는 방법을 알고 싶습니다. 나는 client1이 client2에게 메시지를 보낼 때 메시지 옆에 올바른 시간 (날짜)을 모두 표시하는 방법을 의미합니다.클라이언트 - 서버 앱에서 시간 처리하기

  1. 클라이언트 1은 서버에 메시지를 보내는 메시지 옆에 날짜를 제시 현지 시간 사용 CLIENT1 :

    는 지금까지 내가 할 필요가 있다고 생각하는 것이다.

  2. 서버 (C#)가 메시지를 가져 와서 데이터베이스에 저장하고 메시지 옆에 현재 시간을 DateTime.UtcNow으로 저장합니다.
  3. client2가 로그인하면 UTC 시간을 사용하여 서버에서 메시지를 가져 와서 로컬 시간으로 변환합니다.

이렇게하는 방법이 있습니까? 서버에서 클라이언트로 날짜를 보내는 가장 좋은 방법은 무엇입니까? 서버에서 날짜는 DateTime 개체로 데이터베이스에 저장됩니다. 어떤 형식으로 변환하여 클라이언트에게 보낼 수 있습니까?

답변

2

당신은보고 된 시간이 될 필요가 얼마나 정확한지에 따라 여기에 몇 가지 옵션이 있습니다 : 정말 정확해야하는 경우

  1. , 나는 전용 서버 시간에 의존하는 것이다. client1에서 서버로 메시지를 보내면 서버가 해당 메시지의 응답 시간과 관련된 UTC 시간을 반환하게하십시오. 그래서 "hello"라는 메시지를 보내고 응답 본문이나 확장 헤더 등에서 UTC 시간을 사용하여 200 OK를받습니다. 그런 다음 client1은이 시간 (현지 시간으로 변환 됨)을 표시하고 client2는 같은 시간 (현지 시간으로 변환 됨)을 표시합니다.
  2. 정확도가 중요하지 않은 경우 client1의 메시지를 보낸 다음 현지 시간을 사용하는 것이 더 쉽습니다. 서버에서 UTC 작업을 수행하고 client1이 해당 시간을 사용하도록 할 수는 있지만 client1의 메시지에 대한 응답에서 아무것도 볼 필요가 없습니다.

날짜를 앞뒤로 보내려면 NSDateFormatter의 설명서를 확인하십시오. 서버에서 쉽게 사용할 수있는 형식을 사용하거나 서버에서 가장 쉬운 형식을 사용하고 포맷터에서 사용자 정의 dateFormat 속성을 사용하여 원하는대로 구문 분석 할 수 있습니다.

+0

덕분에, 나는 아직도 C#의 DateTime 객체로부터 무엇을 보내야하는지 이해하지 못했습니다. 예를 들어 objective C에서 Date 객체를 timeIntervalSince1970으로 변환 할 수 있습니다.이 이유는이 숫자를 문자열로 파싱하여 전송하는 이유입니다. 하지만 C#에서 timeIntervalSince1970 DateTime으로 변환 할 수있는 메서드가 있다고 생각하지 않습니다. – Eyal

+0

C#은 잘 모르겠지만 유망 해 보입니다. http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx. 그것을 이해하는 형식을 선택하십시오. 1970 년대 이후 에포크 시간으로 변환하는 방법을 찾을 수 있다면 그것을 사용할 수도 있습니다. – kevboh

관련 문제