2016-06-30 2 views
2

은 다음 예를 참조하십시오.각도 날짜 문제

입력 필드 (2016 년 6 월 30 일)에서 오늘을 선택하면 출력 각도는 UTC 시간입니다. 따라서 실제 시간에서 2 시간을 뺍니다. 그러나 우리는 날짜 만 선택하기 때문에 시간은 항상 00:00:00입니다.

따라서 00:00:00에서 2 시간을 빼면 그 전날의 날짜가됩니다.

어떻게 해결할 수 있습니까? 타임 스탬프에 수동으로 시간을 추가해 보았습니다. 그러나 문제는 자정과 오전 2시 사이에 여전히 존재합니다.

감사합니다.

[편집] 나는 현재 다음과 같은 해결 방법을 사용하고 있습니다 : 1 개 또는 2 시간의 차이가 변화에 날짜를 일으킬 나던 그래서 우리는 그냥 수동으로 오후 6 시간을 설정하고있어 날짜를 필요로하기 때문에

을 .

d.setHours('18', '00', '00'); 
+0

각도 1 또는 2? – Martin

+0

날짜와 시간대를 많이 사용하는 경우 moment.js를 조사 할 수 있습니다. 각도 1을 사용했습니다. * – user3791775

+0

왜 깨지지 않은 것을 고쳐야하는지 이해가되지 않습니다. 날짜는 항상 현재 위치와 관련이 있습니다. 입력 한 날짜를 표시하려면 'date' 필터를 사용하면 올바르게 표시됩니다. 그렇다면 정확히 무엇이 잘못 되었습니까? – str

답변

1

JavaScript 날짜 인스턴스는 항상 현재 위치를 기준으로합니다. 그러나 날짜 부분 만 사용하고 시간 부분은 사용하지 않으려 고하므로 날짜를 입력하고 표시 할 때 항상 하나의 동일한 시간대를 사용하십시오. 시간대를 선택하십시오 (예 : UTC.

:

<input ng-model="flight.date" ng-model-options="{timezone:'UTC'}"> 

당신은 또한 날짜를 표시하는 시간대를 사용하고 있는지 확인 : 시간이 UTC을 (대신 브라우저의 기본의)를 사용하여 입력됩니다 당신은 모델에 옵션으로 것을 추가로 확인 할 수 있습니다

<% flight.date | date:'mediumDate':'UTC' %> 

은 Plunker의이 업데이트 내 포크를 참조하십시오 https://plnkr.co/edit/LqZv7olKCl12OjDMvicF?p=preview

+0

ng-model-options = "{timezone : 'UTC'} 추가는 완벽하게 작동합니다. 피의 지옥 나는 어제 그것을 발견해야했다 : P 고마워! – Bento

+0

두 번째 코드 조각의 중요성을 과소 평가하지 마십시오. 그렇지 않으면 애플리케이션에 동일한 종류의 문제가 발생하지만 GMT 이전의 시간대 (예 : 미국)에는 문제가 발생합니다. 동일한 날짜를 항상 표시하려면 응용 프로그램을 사용하는 위치에 관계없이 입력 시간대와 표시 시간대를 수정해야합니다. –