javascript의 시간 설정 - "setHours", "setUTCHours"
시간 데이터를 다루는 것은 서버 개발의 중요한 부분 중 하나입니다.
특히, 사용자들이 서로 다른 시간대에 접속하는 글로벌 서비스를 운영할 때, 시간 데이터를 일관되게 관리하는 것이 중요합니다.
웹에서의 시간 데이터는 사용자의 로그나 예약시스템, 일정 관리와 같은 부분에서 사용하며,
이러한 데이터를 올바르게 관리하지 않으면, 데이터의 불일치로 인한 문제가 발생할 수 있어 시간 데이터를 일관적으로 관리해야합니다.
javascript로 시간 설정하기
JavaScript에서 Date
객체를 사용해서 시간을 설정할 때, setHours
와 setUTCHours
메서드를 통해서 시간을 설정할 수 있습니다.
두 메서드는 모두 같은 파라미터를 구성하며, 자세한 메서드의 사용법은 setHours를 통해서 알아보겠습니다.
setHours
를 사용해서 시간 설정하기
setHours
는 로컬의 시간대를 기준으로 Date객체의 시간을 설정합니다.
setHours를 통해서 시간부터 밀리초까지 미세한 시간의 설정이 가능합니다.
아래는 setHours를 통해서 date의 시간을 10시로 설정하는 코드입니다.
const date = new Date();
// setHours(시간, 분, 초, 밀리초)
date.setHours(10, 0, 0, 0); // 로컬 시간대로 10시 설정
위 코드처럼 시간을 설정하게 되면, 서버의 로컬 위치에 따라서 시간이 설정됩니다.
예를 들어, 뉴욕에 있는 서버와 서울에 있는 서버가 각각 로컬 시간대로 위 코드를 사용한 특정 작업을 수행하면,
실제로는 14시간의 차이가 발생하게 됩니다.
이는 일관성없는 데이터를 저장해 서비스를 운영할 때 문제가 될 수 있습니다.
setUTCHours
를 사용해서 시간 설정하기
setUTCHours
는 Date객체의 시간을 UTC를 기준으로 설정합니다.
아래의 코드는 UTC를 기준으로 시간을 10시로 설정하는 코드입니다.
const date = new Date();
date.setUTCHours(10, 0, 0, 0); // UTC 시간대로 10시 설정
위 처럼 setUTCHours
를 통해서 시간을 설정하면 setHours
와 달리 서버의 위치에 상관없이 UTC를 기준으로 시간을 10시로 설정합니다.
setHours
vs setUTCHours
로컬을 기준으로 시간을 설정하면 서버가 위치한 특정 지역의 시간대를 따르기 때문에, 서버가 여러 지역에 걸쳐 분산되어 있는 경우, 시간대의 불일치 문제가 발생할 수 있습니다.
반면, UTC 시간대를 사용해서 시간을 설정하게 되면 전 세계에서 동일한 기준의 시간을 사용하므로, 서버의 위치와 상관없이 시간 데이터의 일관성을 보장할 수 있습니다.
이는 특히 글로벌 서비스를 운영할 때 중요한 부분인데, 모든 서버와 사용자가 동일한 기준으로 시간을 저장하며 데이터의 일관성을 유지하며 관리할 수 있게 됩니다.