jQuery는 괜찮아 보입니다. 따라서 JavaScript가 비활성화되었거나 jQuery를로드하지 않는 한 왜 작동하지 않는지 알 수 없습니다.
그러나 사용자의 현재 오프셋이 모든 날짜에 동일하게 적용된다는 잘못된 가정하에 작업 한 것입니다. 일광 절약 시간제를 사용하는 모든 시간대에서는 잘못되었을 수 있습니다.
더 나은 방법은 브라우저에서 UTC로 변환하는 것입니다. 또는 최소한 getTimezoneOffset 호출에서 해당 날짜/시간을 사용하십시오.
질문에 대한 응답으로 업데이트 답변
, 당신이 지금 가지고있는 코드는 현재 이미 오프셋 얻을 것이다. 당신은 그들이 입력 할 수있는 모든 날짜에 대해 동일한 오프셋이 될 것이라고 보장 할 수 없습니다. 예를 들어 :
<input type="text" id="someDate" />
var someDateString = $('#someDate').val();
var dt = new Date(someDateString);
var offset = dt.getTimezoneOffset();
텍스트 입력의 값이 변수이기 때문에, 많은 시간대에 당신은 당신이 6 월 윌과는 다른 월 오프셋을 얻을 것이다. 그래서 더 나은 것은 바로 브라우저에서 UTC로 변환하는 것입니다 :
이
var someDateString = $('#someDate').val();
var dt = new Date(someDateString);
var s = dt.toISOString();
문자열 s
는 ISO8601 형식으로 될 것이며, 이미 UTC로 변환됩니다.
물론 입력 문자열이 구문 분석되는 방식을 훨씬 잘 제어 할 수 있기 때문에 나는 이것을 moment.js을 사용하여 수행 할 것입니다.
일반적으로이 방법을 사용하면 충분합니다. 무엇이인데 사용자가 없기 때문에 서버에서이 변환을 수행해야 할 가능성이있는 경우 은의 시간대를 알아야합니다. 오프셋뿐만 아니라 실제 시간대. timezone tag wiki의 "시간대! = 오프셋"을 참조하십시오.
가장 좋은 방법은 그것들을 요청하는 것입니다. this one과 같은지도 기반 선택기는 좋은 반응입니다. jsTimezoneDetect을 사용하여 기본 선택에서 추측 할 수도 있습니다. 궁극적으로 서버에서 사용할 수있는 America/New_York
과 같은 문자열 식별자 뒤에 있습니다. .Net에서는 Noda Time의 TZDB 제공 업체와 함께 사용할 수 있습니다.당신이 어떤 공상 라이브러리를 원하지 않는 경우
, 당신은 윈도우 시간대를 고수하고 .Id
키이며, .DisplayName
이 값 TimeZoneInfo.GetSystemTimeZones()
에서 드롭 다운 목록을 표시 할 수 있습니다.
예 "때때로"작동하지 않는 이유도 혼란 스럽습니다. 내 가정 (나는 생각하기에 나쁘다)은 자바 스크립트를 사용 가능하게했기 때문에 사이트 전체에 문제/오류가 있기 때문이다. 그래서 사용자가 현재 유효한 "오프셋"(일광 절약 시간 포함)을 얻는 더 좋은 방법이 무엇인지에 대한 샘플 코드가 있습니다. 내 Google 검색이 많이 나타나지 않았습니다. 또는 개발 된 jQuery 플러그인에 대해 알고 계십니까? – adondero
감사합니다. 그것이 바로 그것을 올바른 방향으로 지적했기 때문에 대답으로 표시했습니다. 한 가지 옵션은 사용자가 로그인 할 때 표준 시간대를 표시하고 올바르지 않으면 변경하도록하는 것입니다. – adondero