이 섹션에서는 Bubble에서 날짜와 시간을 다루는 방법에 대해 설명하고 날짜와 시간을 입력받는 input에 대해 설명합니다.
(1) 버블의 날짜/시간 정의
날짜 및 시간 element를 사용하면 사용자가 날짜, 시간 또는 둘 다 다른 방식으로 지정할 수 있습니다.
- 사용자의 생일을 저장하거나, 검색 결과를 필터링하거나, 특정 시간대에 예약을 수락하려는 경우 Bubble은 사용자 친화적인 방식으로 설정할 수 있는 여러 도구를 제공합니다.
- 날짜와 시간을 처리하는 UX를 설계하면 다양한 시나리오가 열립니다. Bubble의 기본 제공 도구는 다양한 기능을 제공하지만 훨씬 더 많은 사용자 정의를 제공하는 많은 플러그인도 있습니다. 자세한 내용은 플러그인 스토어를 확인하세요
(2) Bubble이 날짜 및 시간을 처리하는 방법
Bubble에서 날짜 및 시간에 대한 작업을 시작하기 전에 Bubble에서 이 데이터를 처리하는 방법에 대한 기본 사실을 아는 것이 유용합니다.
1. 날짜 및 시간 저장 방법
Bubble에서 날짜와 시간을 보면 다음과 같이 쉽게 읽을 수 있는 형식으로 표시됩니다.
- 2050년 1월 31일 - 오후 1시
- 2050년 1월 31일 - 13:00
반면에 앱의 데이터베이스에서는 날짜와 시간이 다른 방식으로 저장됩니다.
→ Unix Time (때때로 epoch Time이라고도 함)이라는 형식으로 저장됩니다.
위 예의 시간은 뉴욕시에 있는 경우 다음과 같이 저장됩니다.
- 2527264800
Unix Time은 컴퓨터가 날짜와 시간을 합쳐서 숫자 값으로 저장하는 방법입니다.
위의 예에서처럼 사람이 읽을 수 있는 문자열로 저장하는 대신 Unix 시간은 1970년 1월 1일 00:00:00 UTC 이후 경과된 초 수로 나타냅니다.
- 이것은 Bubble 전용으로 설계된 방법이 아니고 대부분의 컴퓨터 시스템에서 사용되는 체계적인 방법으로 날짜 및 시간 정보를 저장하고 교환하는 보편적인 표준이 됩니다.
- Unix Time을 사용하는 장점은 컴퓨터가 날짜와 시간을 단일 숫자 값으로 표시하기 때문에 비교 또는 정렬과 같은 간단한 산술 연산을 수행할 수 있다는 것입니다. 또한 Unix Time은 특정 시간대나 달력과 독립적이므로 절대값입니다.
- 위의 시간은 전 세계 어디에서나 2527264800이지만 사람이 읽을 수 있는 형식인 01/31/2050 - 01:00 pm은 현재 시간대(timezone)에 따라 변경됩니다.
2. Unix Time의 특징
이러한 설계에 결과로 자연스럽게 두 가지 특징이 발생합니다.
1) 날짜와 시간 모두 항상 같이 저장됩니다.
모든 날짜와 시간은 초를 나타내는 숫자 값으로 저장되기 때문에 이 값은 날짜나 시간만을 나타내지 않으며 항상 둘 다 저장됩니다*.*
버블에서 날짜만 저장하면 해당 날짜의 오전 12시(00:00)에 제공되는 시간대에 해당 날짜가 저장됩니다.
2) 시간대(time zoen)를 저장하지 않습니다.
Bubble 데이터베이스에 저장할 날짜와 시간을 저장할 때마다 표준 시간대(time zoen)를 함께 저장하지 않습니다.
*주의: 시간대(time zoen)는 실제 값이 아닙니다. 요청된 시간대(time zoen)와 일치하는 읽을 수 있는 텍스트로 유닉스 시간(Unix Time) 값을 형식화한 것일 뿐입니다.
그렇다고 시간대를 고려할 필요가 없다는 의미는 아닙니다.
아래에서 예시를 들어 설명하겠습니다.
- 뉴욕에 있는 사용자가 날짜 시간을 2050년 1월 31일 - 오후 1시로 저장합니다.
- UTC(표준시간대)와의 오프셋은 -05:00 또는 -18000초입니다.
- 시드니에 있는 사용자가 동일한 날짜/시간을 2050년 1월 31일 - 오후 1시로 저장합니다.
- UTC(표준시간대)와의 오프셋은 +11:00 또는 39600초입니다.
예시에서 볼 수 있듯이 현지 시간대와 동일한 날짜와 시간을 제공하지만 호주 시간은 뉴욕보다 16:00시간 빠릅니다.
이것의 교훈은 Bubble이 실제로 시간대(Timezone)를 저장하지 않는다는 것입니다.
결과적으로 위의 논리는 Bubble이 두 가지 다른 Unix Time 값을 저장하도록 합니다.
- 뉴욕(IST)에서 Unix 시간은 2527264800초입니다.
- 시드니(AEST)에서 Unix 시간은 2527207200초입니다.
- 시차가 16시간임을 알면 두 유닉스 시간 숫자는 57600초 떨어져야 합니다.
3. 이 복잡한 시스템을 어떻게 추적합니까?
- 대부분의 경우 그럴 필요가 없습니다.
- 시간과 날짜는 시간대, 윤년, 일광 절약 시간 및 기타 불일치로 인해 작업하기 복잡하지만 Bubble은 이러한 모든 계산을 처리합니다.
- 이 글의 목적은 시간과 날짜가 어떻게 저장되고 처리되는지에 대한 일반적인 이해를 제공하여 Bubble의 도구를 효율적으로 사용하기 쉽게 만드는 것입니다.
4. 날짜/시간 데이터 가져오기 시 주의 사항
날짜는 epoch 또는 UNIX Time 형식으로 Bubble 데이터베이스에 저장됩니다.
- 이 형식은 1970년 1월 1일 자정(UTC) 이후 경과된 초 수를 확인하므로 1970년에서 매우 먼 과거 또는 미래 날짜를 처리할 때 약간의 불일치가 발생할 수 있습니다.
- epoch에서 상당히 먼 날짜를 처리하는 UNIX Time 형식의 경우 날짜와 관련된 불규칙한 차이가 있을 수 있습니다.
- 결과적으로 이러한 유형의 날짜를 가져오고 다시 내보내면(또는 그 반대로) 값이 약간 상쇄될 수 있습니다.
- 현재 이 문제를 회피하는 유일한 대안은 날짜를 "텍스트" 필드로 저장하는 것입니다.
- 근본적으로 향후 이 문제를 완화할 수 있는 시간처리에 대한 개선사항을 적극적으로 모색하고 있습니다.
(3) 날짜/시간 선택기 (Date / Time Picker)
날짜/시간 선택기(Date / Time Picker)를 사용하면 시각적 달력에서 날짜와 시간을 선택할 수 있습니다.
날짜만 선택하도록 설정할 수도 있습니다. 이 경우 아래 애니메이션의 오른쪽에 있는 필드가 숨겨집니다.
날짜/시간 선택기는 사용자에게 날짜 혹은 시간 또는 둘 모두를 선택할 수 있는 시각적 인터페이스를 제공합니다.
- 사용자에게 날짜만 묻도록 element를 설정한다면 현재 *사용자의 시간대에서 선택한 날짜의 오전 12시(00:00)를 기준으로 날짜가 저장(바뀜)됩니다.
- Property Editor(속성 편집기)에서 다른 시간대(time zon)를 선택한 경우 해당 시간대의 오전 12시(00:00)에 날짜가 저장(바뀜)됩니다.
- 최소 및 최대 날짜와 최소 및 최대 시간을 설정할 수 있으며 시간 선택기의 간격(기본적으로 30분)을 설정할 수 있습니다.
(4) 입력 요소 (Input element)
입력 요소(Input element)는 주로 텍스트 입력에 사용되고 날짜/시간은 위의 날짜/시간 선택기(Date / Time Picker)를 사용하여 입력을 받습니다. 대신에 입력 요소를 사용하는 경우 날짜를 예상하도록 설정할 수 있습니다.
- 이 경우 사용자는 위와 같은 달력/시간 선택기(Date / Time Picker)를 볼 수 없지만 대신 날짜를 직접적으로 숫자로 입력할 수 있습니다.
- 입력 요소(Input element)는 날짜를 지원하지만 시간은 지원하지 않습니다.
- 미국 형식(mm/dd/yyyy) 또는 유럽 형식(dd/mm/yyyy)으로 날짜 형식을 지정하도록 설정할 수 있습니다.