2014-11-18 3 views
0

시간 입력란을 로컬 사용자 입력하는 방법을 알 수 없습니다. start_time 및 end_time이있는 형식으로 이벤트를 생성합니다. 시간 필드에서 시간을 가져 와서 사용자의 입력을 현지 시간으로 저장하고 싶습니다. 그런 다음 이벤트를 시작했는지 또는 종료했는지 여부를 확인하기 위해 UTC로 변환하고 Time.now.utc와 비교하려고합니다.시간 입력을 현지 시간으로 저장해야 함

start_time.localtime으로 시작 및 종료 시간을 변환 한 다음 start_time (time_field 입력의 기본값은 UTC 임)에서 추가/감산하고 해당 오프셋을 변수로 저장하는 방법에 대해 생각했습니다. 그런 다음 내 저장된 시간에서 오프셋을 더하거나 빼고 Time.now (기본값은 로컬 임)와 비교하십시오.

이것은 사람들이 사용해야하는 공통 기능이라고 확신하기 때문에 필요한 것보다 훨씬 많은 작업처럼 보입니다. 찾을 수 없었던 양식 또는 간과 한 다른 간단한 솔루션에 대한 local_time_field 구현이 있습니까?

모든 의견을 환영합니다. 감사!

답변

1

JS와 함께 사용자의 로케일을 사용하는 가장 직접적인 방법은 브라우저에 있습니다. new Date(userDateString).getTimeZoneOffset()은 UTC로부터 사용자 오프셋을 분 단위로 반환합니다. 이를 사용하여 서버로 보내기 전에 시간을 UTC로 변환 할 수 있습니다. 물론 JS가없는 사용자를 지원해야하는 경우에는 작동하지 않습니다. 이러한 사용자는 다른 접근 방식이 필요합니다. 예를 들어 "내 시간대"드롭 다운을 만들 수 있습니다.

어떤 방법을 택하든 UTC로만 시간을 저장하면 두통이 훨씬 줄어들 것입니다. 가능한 한 처리 초기에 사용자 로컬 시간을 UTC로 변환하고, 표시하려고 할 때만 사용자의 로케일로 변환하십시오. 그렇지 않으면 시간대뿐만 아니라 DST도 처리해야하며 큰 두통입니다.

+0

입력 해 주셔서 감사합니다. 나는 똑같은 생각을하고 있었다. – Doug

관련 문제