67. VFR 추가 입력 요소 Part 3: date & time

date 요소

이번 챕터는 날짜를 저장하는데 사용하는 date 입력 요소를 살펴보겠다. (https://edk2-docs.gitbook.io/edk-ii-vfr-specification/2_vfr_description_in_bnf/211_vfr_form_definition#2.11.6.9-vfr-date-statement-definition)

아래의 코드를 Form.vfr에 추가해야 한다.

date
  varid = FormData.DateValue,
  prompt = STRING_TOKEN(DATE_PROMPT),
  help = STRING_TOKEN(DATE_HELP),
enddate;

추가로 Strings.uni에도 아래의 문자열을 추가해야 한다.

#string DATE_PROMPT            #language en-US  "Date prompt"
#string DATE_HELP              #language en-US  "Date help"

날짜는 특수 EFI_HII_DATE 유형으로 인코딩 된다. (https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h)

typedef struct {
  UINT16    Year;
  UINT8     Month;
  UINT8     Day;
} EFI_HII_DATE;

따라서 이를 이전과 동일하게 Data.h의 구조에 추가해주겠다.

결과적으로 아래와 같은 화면이 나온다.

값은 MM/DD/YYYY 형식으로 표시된다. 따라서 날짜의 조건에 맞게 값을 넣어줘야 한다. 이외에도 윤년도 검사하기 때문에 02/29/2020는 입력할 수 있지만 02/29/2021은 입력이 안된다.

time 요소

time VFR 입력 요소는 시간을 저장하는 데 사용된다 (https://edk2-docs.gitbook.io/edk-ii-vfr-specification/2_vfr_description_in_bnf/211_vfr_form_definition#2.11.6.10-vfr-time-statement-definition).

아래의 코드를 Form.vfr에 추가 해야한다.

Strings.uni에 문자열 또한 추가해주자.

추가로 Data.h의 구조에 아래의 코드도 추가해주자.

결과는 결론적으로 아래와 같이 나오며 date와 동일하게 HII Form Browser에 유효하지 않은 시간 값은 설정이 불가능하다.

Last updated