13. 날짜, 시간 등을 대답하기
시간, 날짜, 요일, 연도 등에 관한 값은 시스템이 직접 관리하고 있기 때문에 필요할 경우 시스템에 물어보면 된다.
u: ( 몇 시에요 ) 지금 %hour : %minute 이에요
u: ( 몇 시에요 ) %time 에요
u: ( 오늘 * [요일 며칠] ) 오늘은 %monthname %day %date 입니다.
그런데 시스템 변수는 숫자 값만 주기 때문에 위의 출력문은 다음과 같이 출력된다.
지금 15: 28 이에요.
15:28 에요
오늘은 April 15 Thursday 입니다
위의 출력문을 “15시 28분”, “Thursday입니다” 등과 같이 시간 단위를 붙이고 띄어쓰기도 가다듬기 위해 시스템 변수에 시간 단위나 종결 조사를 붙여 쓰면 오류가 난다. “%hour시 %minute분” 이라고 쓰면, CS는 “%hour시”라는 시스템 변수와 “%minute분”이라는 시스템 변수를 찾으려 하는데 그런 변수는 없으므로 에러가 발생하기 때문이다. 이때는 join함수를 활용하면 된다.
t: 지금 시각은 ^join(%hour 시) ^join(%minute 분) 이에요.
join함수는 괄호 안에 포함된 인수들을 빈칸없이 합쳐서 하나의 문자열로 만드는 함수이다.위의 출력문은 “지금 시각은 20시 35분 이에요”가 될 것이다. 만약 12시간 단위로 나눠서 보여 주고 싶다면 %hour를 12로 나누어서 나머지 값을 출력해 주면 된다.
$tmp = ^compute(%hour mod 12)
t: 지금 시각은 ^join($tmp 시) ^join(%minute 분) 입니다.
출력문은 “지금 시각은 8시 35분 입니다”가 될 것이다.
아래에 날짜, 시간, 요일 등과 관련되어 자주 사용할 수 있을 시스템 변수를 정리하였다.[1]