Share via


API를 사용하여 근무 시간 일정 편집

조직은 리소스의 일정에서 작업 시간을 프로그래밍 방식으로 만들기, 편집 또는 삭제해야 하는 경우가 많습니다. 일정에는 작업이 예약될 때 리소스의 가용성을 결정하는 작업 시간, 시간 및 휴식 시간이 표시됩니다. 이러한 리소스는 특정 시간대에 예약되어야 하며, 비즈니스 폐쇄를 관찰하거나 관찰하지 않을 수 있으며 가변 용량을 가질 수 있습니다. Field Service 앱에서 근무 시간을 정의하는 방법에 대한 자세한 내용은 예약 가능한 리소스에 근무 시간 추가를 참고하세요.

Field Service 앱을 사용하는 것 외에도 다음 API를 사용하여 선택한 레코드 유형에 대한 일정 규칙을 수정할 수 있습니다.

  • 일정 저장 API(msdyn_SaveCalendar) 요청으로 전달된 입력을 기반으로 선택한 엔터티에서 캘린더 레코드를 만들거나 업데이트합니다.
  • 일정 삭제 API(msdyn_DeleteCalendar)는 요청으로 전달된 입력을 기반으로 선택한 엔터티 일정의 내부 일정 규칙을 모두 삭제합니다.
  • 캘린더 저장/삭제 API V2(msdyn_SaveCalendar/msdyn_DeleteCalendar, 패스 플래그 UseV2)는 겹침 규칙에 대한 논리를 변경하여 여러 작업 시간 반복을 동시에 허용합니다. 자세한 내용은 겹치는 규칙이 있으면 어떻게 됩니까?을 참조하십시오.

이 문서에서는 각 API의 입력(요청) 및 출력(응답)에 대한 세부 정보와 사용 예가 포함되어 있습니다.

전제 조건

  • Universal Resource Scheduling 버전 3.12.45.7이 설치된 플랫폼 버전 9.2.21055 이상.
  • 다음 레코드 유형 중 하나의 사용:
    • 예약 가능한 리소스(bookableresource)
    • 리소스 요구 사항(msdyn_resourcerequirement)
    • 근무 시간 템플릿(msdyn_workhourtemplate)
    • 프로젝트(msdyn_project)

일정 이벤트 유형

일정을 만들 때 근무 시간 유형이 발생하는 횟수(한 번, 하루 종일, 매주 또는 매일)를 정의하거나 사용자 지정 반복 주기를 만들 수 있습니다. 이러한 일정 이벤트에 대한 자세한 내용은 이 문서 뒷부분에 있는 예를 참고하세요.

항목

근무 시간 유형이 엔터티의 일정에서 한 번만 발생하는 경우 이를 발생이라고 합니다.

예를 들어 2021년 5월 26일 오전 5시부터 오전 10시까지 작업하는 리소스가 있다고 가정해 보겠습니다. 이러한 API는 같은 날에 시작하고 끝나는 이러한 유형의 발생만 지원합니다. 또 다른 예로 2021년 5월 26일 2021년 5월 27일 오후 8시 오전 10시부터 작업하는 리소스가 있다고 가정해 보겠습니다. 이 발생은 msdyn_SaveCalendar API 하나만 호출해서는 만들 수 없고 대신 두 번 호출해야 합니다.

하루 종일 발생

근무 시간 유형이 시작 날짜의 자정(오전 12:00시)부터 시작하여 하루 또는 그 이상일 때는 하루 종일 발생입니다. 하루 종일 발생하는 최대 기간은 5년입니다.

예를 들어 리소스는 2021년 5월 26일부터 2021년 5월 30일까지 하루 종일 작동합니다. 이것은 5일 동안 지속되는 하루 종일 발생합니다.

주간 되풀이

매주 지정된 요일에 근무 시간 유형이 동시에 발생하는 경우 이를 매주 되풀이라고 합니다.

예를 들어 리소스는 매주 월요일, 화요일, 수요일 오전 5시부터 오전 10시까지 작동합니다.

일간 되풀이

매일 같은 시간에 근무 시간 유형이 발생하는 경우 이를 매일 되풀이라고 합니다.

예를 들어 리소스는 매일 오전 5시부터 오전 10시까지 작동합니다.

사용자 지정 되풀이

근무 시간 유형이 특정 요일에 특정 시간에 발생하지만 다른 요일에 시간이 다른 경우 사용자 지정 되풀이를 만들 수 있습니다.

예를 들어 리소스는 매주 월요일 오전 5시부터 오전 10시까지, 수요일에는 오후 12시부터 오후 3시까지 작동합니다.

근무 시간 유형

이러한 API는 다음 근무 시간 유형에 대한 생성, 업데이트 및 삭제 작업을 지원합니다.

작업 시간

근무 시간은 엔터티가 작업을 수행할 수 있는 시간입니다.

이러한 API를 사용하여 다음을 수행할 수 있습니다.

  • 근무 시간 발생을 생성, 편집 또는 삭제합니다.
  • 근무 시간 일일 되풀이를 생성, 편집 또는 삭제합니다.
  • 근무 시간 주간 되풀이를 생성, 편집 또는 삭제합니다.
  • 근무 시간 사용자 지정 되풀이를 생성, 편집 또는 삭제합니다.
  • 하루 종일 근무 시간 발생을 생성, 편집 또는 삭제합니다.
  • 근무 시간에 용량을 생성하거나 편집합니다.
  • 반복에서 단일 근무 시간 항목을 편집합니다.
  • 되풀이에서 이 발생 및 다음 발생을 편집합니다.
  • 근무 시간 발생을 되풀이로 변경합니다.
  • 일정 규칙의 표준 시간대를 변경합니다.

이 API를 사용하면 다음을 수행할 수 없습니다.

  • 되풀이에서 단일 근무 시간 항목을 삭제합니다.
  • 24시간 동안 발생하지만 자정(오전 12:00)에 시작하고 끝나지 않는 발생을 만듭니다.
  • 하루 종일 되풀이를 생성, 편집 또는 삭제합니다.

휴무 시간

기업이 불특정 사유로 업무를 수행할 수 없는 시간입니다.

이러한 API를 사용하여 다음을 수행할 수 있습니다.

  • 하루 종일 휴무 시간 발생을 생성 또는 편집합니다.
  • 휴무 시간 발생을 생성 또는 편집합니다.
  • 일정 규칙의 표준 시간대를 변경합니다.

이러한 API를 사용하여 다음을 수행할 수 없습니다.

  • 휴무 시간 반복 주기를 생성 또는 편집합니다.

휴식

엔티티가 휴식을 취하고 작업에 사용할 수 없는 근무일의 시간입니다. 근무 시간 없이는 휴식이 있을 수 없습니다. 하루에 두 근무 시간 사이에 발생해야 합니다. 휴식 시간은 근무 시간과 중복될 수 없습니다.

이러한 API를 사용하여 다음을 수행할 수 있습니다.

  • 근무 시간 동안의 휴식을 생성 또는 편집합니다.

이러한 API를 사용하여 다음을 수행할 수 없습니다.

  • 근무 시간의 발생 또는 되풀이로 인한 휴식만 삭제합니다.

휴가

휴가로 인해 엔터티가 업무를 수행할 수 없는 시간입니다. 쉬는 이유를 지정할 수 있습니다.

이러한 API를 사용하여 다음을 수행할 수 있습니다.

  • 레이블로 휴가를 만들거나 편집합니다.
  • 일정 규칙의 표준 시간대를 변경합니다.

이러한 API를 사용하여 다음을 수행할 수 없습니다.

  • 휴가 되풀이를 생성 또는 편집합니다.

휴무

비즈니스를 종료할 시간을 정의하는 업무 종료 엔터티를 생성할 수 있습니다. msdyn_SaveCalendar API를 사용하면 선택 사항 ObserveClosure 키를 사용하여 조직의 업무 종료 시간을 관찰하거나 무시하도록 모든 엔터티를 설정할 수 있습니다. 이러한 종료를 관찰하도록 설정되면 엔터티는 작업에 사용할 수 없습니다.

일정 API 저장

입력

요청에는 문자열 유형인 CalendarEventInfo라는 하나의 특성만 포함됩니다. 이 문자열에 모두 포함된 몇 가지 다른 속성이 포함되어 있습니다.

노트

다음 테이블에서 유형은 성공적인 요청을 할 것으로 예상되는 형식을 나타냅니다. 그러나 전체 요청은 단일 문자열로 구문 분석됩니다.

CalendarEventInfo

이름 타입 필요함 설명
EntityLogicalName String 이 키는 API가 호출되는 엔터티를 설명합니다. 이 엔터티의 일정을 만들거나 편집할 예정입니다.
CalendarId GUID 이 키는 위에서 설명한 엔티티와 관련된 캘린더 ID를 포함합니다. 이러한 엔터티가 생성되면 일정 레코드도 자동으로 생성됩니다. 이러한 API는 규칙을 추가하거나 기존 규칙을 편집하여 해당 일정 레코드를 편집합니다.
RulesAndRecurrences RulesAndRecurrences 이 키는 배열이며 각 요소에는 다음 섹션의 표에 나열된 여러 속성이 포함되어 있습니다. 배열의 크기는 최소한 1이어야 합니다.
IsVaried Boolean 없음 이 키는 사용자 지정 되풀이 시나리오에 대해 true로 설정되어야 합니다.
IsEdit Boolean 없음 이 키는 기존 규칙 편집에 대해 true로 설정되어야 합니다.
TimeZoneCode Integer 없음 이 키는 일정 규칙의 시간대에 해당하는 정수 값을 사용합니다. 매핑하려면 이 문서의 후반부에 위치한 표준 시간대 코드로 이동합니다. 기본값은 사용자의 표준 시간대입니다.
InnerCalendarDescription String 없음 이 키는 일정 규칙이 휴가를 위한 경우에만 필요합니다. 쉬는 이유를 포함해야 합니다.
ObserveClosure Boolean 없음 이 키는 되풀이에만 적용됩니다. true로 설정된 경우, 엔터티는 업무 종료를 따릅니다.
RecurrenceEndDate 날짜/시간 없음 이 키는 되풀이에만 적용됩니다. 여기에는 되풀이 종료 날짜가 포함됩니다. 타임스탬프가 08:00:00 또는 이전인 경우 되풀이 종료 날짜는 지정된 날짜의 하루 전입니다. 타임스탬프가 08:00:01 이후이면 날짜가 있는 그대로 적용됩니다. 발생의 기본값은 Null입니다. 되풀이의 기본값은 9999년 12월 30일 23:59:59시(UTC )입니다.
RecurrenceSplit Boolean 없음 이 키는 되풀이에만 적용됩니다. true로 설정된 것은 되풀이의 "이번 및 다음 발생"을 편집하기 위한 것입니다.
ResourceId GUID 없음 이 키에는 SystemUserId 또는ResourceId를 포함하며 이 호출과 연결된 엔터티가 SystemUser 유형의 예약 가능한 리소스인 경우에만 전달됩니다. 이것은 서비스 관리 탭의 OwnCalendar 권한을 확인하는 데 필요합니다.
UseV2 플래그 없음 이 플래그를 전달하면 여러 반복을 허용하는 향상된 겹침 규칙 논리와 함께 근무 시간 달력의 V2 버전을 사용할 수 있습니다. 자세한 내용은 겹치는 규칙이 있으면 어떻게 됩니까?을 참조하십시오.

RulesAndRecurrences

입력 Type 필수 설명
규칙 규칙 이 키는 배열이며 각 요소에는 다음 섹션의 표에 나열된 여러 속성이 포함되어 있습니다. 배열의 크기는 최소한 1이어야 합니다.
RecurrencePattern String 없음 이 키는 되풀이에만 적용됩니다. 현재 FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 패턴만 지원합니다. BYDAY는 더 적은 일수를 포함하도록 변경할 수 있으나, FREQINTERVAL은 변경할 수 없습니다.
InnerCalendarId GUID 없음 이 키는 편집에만 적용됩니다. 규칙을 편집 중인 경우 InnerCalendarId가 여기를 통과해야 합니다. 만약 InnerCalendarId가 통과되지 않으면 IsEdit 키가 true로 설정되더라도 API가 새 규칙을 생성합니다.
작업 Integer 없음 이 키는 사용자 지정 되풀이에만 적용됩니다. 사용자 지정 되풀이를 생성하거나 편집하는 경우 다음 번호 중 하나를 입력해야 합니다.
  • (1) 되풀이에 하루 추가
  • (2) 되풀이에서 하루 삭제
  • (3) 시작 또는 종료 날짜 또는 시간만 수정하거나 용량 수정
  • (4) (3)에 언급된 키 이외의 편집

규칙

이름 종류 필요함 설명
StartTime DateTime 이 키에는 ISO 형식의 날짜/시간 항목이 포함되어 있습니다. \"2021-05-15T12:00:00.000Z\"을 예로 들 수 있습니다. 시간 부분은 이전에 지정한 시간대에서 작업 시간의 시작 시간을 결정합니다. 날짜 부분은 근무 시간의 시작 날짜를 결정합니다. 여기서, 2021년 5월 15일은 발생 날짜 또는 되풀이 시작 날짜입니다. 패턴이 BYDAY=TU,WE이나 5월 15일(토요일)이 날짜이면 API는 5월 15일 이후의 모든 화요일과 수요일에 대한 규칙을 자동으로 생성하거나 편집합니다. 규칙에 날짜에 해당하는 날짜가 없어도 되는 경우입니다.
EndTime DateTime 여기에는 ISO 형식의 날짜/시간 항목이 포함되어 있습니다. \"2021-05-15T12:00:00.000Z\"을 예로 들 수 있습니다. 시간 부분은 이전에 지정한 시간대에서 근무 시간의 종료 시간을 결정합니다. 날짜 부분은 반드시StartTime의 날짜 부분과 동일한 날짜를 포함해야 합니다. 유일한 예외는 다음과 같습니다.
  • 하루 종일 발생하는 경우입니다. 이 경우 날짜 부분은 종일 발생의 종료 날짜를 반영해야 합니다.
  • 발생은 하루가 끝날 때, 즉 다음 날 오전 12시에 종료됩니다. 이 경우 날짜는 \"2021-05-16T00:00:00.000Z\"과 같아야 합니다. 되풀이 종료 날짜를 지정하려면 RecurrenceEndDate 특성을 수정합니다.
WorkHourType Integer 이 키는 다음 옵션 중 하나에 해당하는 번호를 포함합니다.
  • (0) 작업 중
  • (1) 휴식
  • (2) 휴무
  • (3) 휴가
작업량 Integer 없음 이 키는 엔터티의 용량을 결정합니다. 이는 정수여야 합니다. 기본값은 1입니다.

출력

이 POST API는 선택한 엔터티에 대한 일정 규칙 레코드를 생성하거나 수정합니다. 또한 다음 출력을 제공합니다.

이름 타입 설명
InnerCalendarIds String POST 작업의 결과인 InnerCalendarIds GUID의 배열입니다.

일정 API 삭제

입력

이름 타입 필요함 설명
EntityLogicalName String 이 필드는 일정 규칙이 삭제될 엔티티를 설명합니다.
InnerCalendarId GUID 이 필드는 삭제해야 하는 InnerCalendarId의 ID를 설명합니다. 단일 규칙과 연결된 여러 InnerCalendarIds가 있는 경우 여기에서는 하나의 ID로 충분합니다. 내부 및 외부 일정에 대한 추가 정보: 일정 엔티티
CalendarId GUID 이 필드는 엔터티의 CalendarId를 설명합니다.
IsVaried Boolean 없음 이 필드는 되풀이에만 적용되며 사용자 정의 반복 규칙이 삭제되는 경우 yes로 설정됩니다.
UseV2 플래그 없음 이 플래그를 전달하면 여러 반복을 허용하는 향상된 겹침 규칙 논리와 함께 근무 시간 달력의 V2 버전을 사용할 수 있습니다. 자세한 내용은 겹치는 규칙이 있으면 어떻게 됩니까?을 참조하십시오.

출력

이 POST API는 선택한 엔터티에 대한 일정 규칙 레코드를 삭제합니다. 또한 다음 출력을 제공합니다.

이름 종류 설명
InnerCalendarIds String POST 작업의 결과인 InnerCalendarIds GUID의 배열입니다.

일정 API 로드

입력

이름: msdyn_LoadCalendars
유형: 작업
설명: 지정된 LoadCalendarsInput에 대한 일정을 반환합니다.

이름: msdyn_LoadCalendars.LoadCalendarsInput
유형: 매개 변수
설명: 다음 JSON 형식의 문자열

{
   StartDate: string,
   EndDate: string,
   CalendarIds: string[]
}

이름: msdyn_LoadCalendarsResponse
유형: 복합 유형
설명: msdyn_loadCalendars 작업의 응답을 포함합니다.

이름: msdyn_LoadCalendarsResponse.CalendarEvents
유형: 속성
설명: 다음 JSON 형식의 문자열

{
"calendarId": CalendarEventSlot[]
}

여기서 calendarId는 Calendar의 가이드를 나타내는 적절한 guid이고 CalendarEventSlot은 다음 형식의 객체입니다.

{
  CalendarId: string,
  InnerCalendarId: string,
  Start: string,
  End: string,
  Effort: double
}

API 호출 방법

이러한 API는 브라우저를 사용하여 호출할 수 있습니다.

  1. 일정을 변경해야 하는 브라우저와 조직을 엽니다.
  2. 개발자 도구를 엽니다(Microsoft Edge에서 Ctrl+Shift+I를 선택, Google Chrome에서 F12를 선택).
  3. 콘솔에서 [org-name]을 조직 세부 정보로 교체한 뒤 다음 함수를 입력합니다(예: http://your_org.crm.dynamics.com).
       function CalendarAction(action, data) {
           let req = new XMLHttpRequest();
           req.open("POST", "**[org-name]**/api/data/v9.0/" + action, true);
           req.setRequestHeader("OData-MaxVersion", "4.0");
           req.setRequestHeader("OData-Version", "4.0");
           req.setRequestHeader("Accept", "application/json");
           req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
           req.setRequestHeader("Prefer", 'odata.include-annotations="*"');
           req.onreadystatechange = function () {
               if (this.readyState === 4) {
                   req.onreadystatechange = null;
                   if(this.status == 200) {
                       console.log(JSON.parse(this.response));
                   } else {
                       console.error(JSON.parse(this.response));
                   }
               }
           };
           req.send(JSON.stringify(data));
       }
  1. 이 함수를 정의한 후 API를 사용하여 일정을 생성, 편집 또는 삭제하기 위해 호출할 수 있습니다. 일정을 저장하려면 다음 호출을 입력하세요.
       CalendarAction("msdyn_SaveCalendar",{
           "CalendarEventInfo":"{
               \"CalendarId\":\"df0857c4-50f5-4576-8e89-f236670ad2d5\",
               \"EntityLogicalName\":\"bookableresource\",
               \"TimeZoneCode\":92,\"StartDate\":\"2021-04-25T00:00:00.000Z\",
               \"IsVaried\":false,
               \"RulesAndRecurrences\":[{
                   \"Rules\":[{
                       \"StartTime\":\"2021-04-25T08:00:00.000Z\",
                       \"EndTime\":\"2021-04-25T17:00:00.000Z\",
                       \"Duration\":540,
                       \"Effort\":1
                   }]
               }]
           }"
       })

일정을 삭제하려면 다음 호출을 입력하세요.

       CalendarAction("msdyn_DeleteCalendar", {
           "CalendarEventInfo":"{
               \"CalendarId\":\"8390358c-77d0-430f-b176-f27adadac8eb\",
               \"EntityLogicalName\":\"bookableresource\",
               \"InnerCalendarId\":\"cf508c2c-5c55-485c-be1e-d2ebcb385441\"
           }"
       })
       

필요에 따라 다른 호출을 하는 방법의 예는 다음 섹션을 참조합니다. 3단계에서 함수 호출의 actionmsdyn_SaveCalendar 또는 msdyn_DeleteCalendar으로 교체하고 data를 관련 CalendarEventInfo로 교체합니다.

msdyn_SaveCalendar 작업의 Power Automate 호출에 대한 다음 스크린샷도 참조하세요. msdyn_SaveCalendar 작업에 대한 Power Automate 호출.

API 사용에 대한 예시 시나리오

이러한 API를 사용할 수 있는 몇 가지 시나리오를 살펴보겠습니다.

재준과 팀은 워싱턴 주 벨뷰에 있는 Contoso Enterprises의 배달 트럭 운전사입니다. 배치 담당자인 데비는 이들의 근무 시간 일정 변경을 담당합니다. 데비는 msdyn_SaveCalendarmsdyn_DeleteCalendar API를 사용하여 이러한 변경을 수행합니다.

근무 시간 발생을 만듭니다.

재준은 2021년 5월 15일 오전 9시부터 오후 5시까지 소포를 배달하기 위해 운전할 예정입니다. 데비는 msdyn_SaveCalendar API를 사용합니다.

요청

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T09:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

Response

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 발생을 편집합니다.

그런 다음 재준의 일정은 2021년 5월 15일 오전 10시에 시작하도록 변경됩니다. 데비는 msdyn_SaveCalendar API를 사용합니다.

요청

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T10:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 발생을 삭제합니다.

급한 집안일이 발생하고, Bob은 하루 근무 전체를 취소해야 합니다. 데비는 msdyn_DeleteCalendar API를 사용합니다.

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}"
}

응답

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 일일 되풀이를 만듭니다

2021년 5월 20일부터 Bob은 오전 8시부터 오후 5시까지 일주일 내내 Contoso에서 작업하기로 결정하고 2021년 7월 15일에 작업을 중단합니다.

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-07-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

응답

{
  "InnerCalendarIds": "[\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\"]"
}

증가된 용량으로 근무 시간 매일 되풀이 편집

Bob은 휴식을 취하기 위해 2021년 6월 15일 한 주 내내 일을 중단하기로 결정합니다. 그때까지 Bob은 이전에 동의한 대로 일주일 내내 일정을 계속할 것입니다. 데비는 msdyn_SaveCalendar API를 사용하여 이러한 변경을 수행합니다.

요청

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-06-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"867a2461-cdbe-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 주간 되풀이를 만듭니다

2021년 6월 16일부터 Bob은 수요일과 금요일에 오전 8시부터 오후 5시까지 일하고, 점심 식사를 위해 오후 12시부터 오후 12시 30분까지 휴식을 취합니다. Debbie는 msdyn_SaveCalendar API를 사용하지만 실수로 오후 12시부터 오후 1시까지 휴식을 예약합니다.

Request

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-16T08:00:00.000Z\",\"EndTime\":\"2021-06-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-16T12:00:00.000Z\",\"EndTime\":\"2021-06-16T13:00:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-16T13:00:00.000Z\",\"EndTime\":\"2021-06-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

응답

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 주간 되풀이에서 휴식 편집

그런 다음 Debbie는 실수를 바로잡기 위해 msdyn_SaveCalendar API를 이용하여 휴식을 오후 12시 정각에서 12시 30분으로 수정합니다.

요청

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T08:00:00.000Z\",\"EndTime\":\"2021-06-15T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-15T12:00:00.000Z\",\"EndTime\":\"2021-06-15T12:30:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-15T12:30:00.000Z\",\"EndTime\":\"2021-06-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"1f894441-d0be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 사용자 지정 되풀이 만들기

팀은 Contoso에서 월요일 오전 8시~오후 5시, 수요일 오전 11시~오후 3시에 근무합니다. Tim은 2021년 5월 16일에 Contoso에서 일하기 시작했습니다. 데비는 msdyn_SaveCalendar API를 사용해 팀의 근무 시간을 생성합니다.

요청

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T11:00:00.000Z\",\"EndTime\":\"2021-05-16T15:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\", \"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 사용자 지정 되풀이 편집하기

그러면 Tim의 일정이 수요일 오후 5시부터 오후 8시까지, 목요일 오전 10시부터 오후 12시까지 근무 시간으로 변경됩니다. 월요일은 Tim의 일정에서 제외됩니다. 데비는 msdyn_SaveCalendar를 사용해 이를 달성합니다.

Request

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"IsEdit\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":2,\"InnerCalendarId\":\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T17:00:00.000Z\",\"EndTime\":\"2021-05-16T20:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":3,\"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}, {\"Rules\":[{\"StartTime\":\"2021-05-16T10:00:00.000Z\",\"EndTime\":\"2021-05-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"InnerCalendarId\":null,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=TH\"}]}"
}

응답

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

되풀이에서 근무 시간 발생을 편집합니다

2021년 5월 26일, 팀은 오후 1시부터 7시까지만 일할 수 있습니다. 데비는 이때 msdyn_SaveCalendar API를 사용합니다.

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-26T13:00:00.000Z\",\"EndTime\":\"2021-05-26T19:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"}]}"
}

응답

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

근무 시간 사용자 지정 되풀이 삭제하기

Tim은 회사를 떠나기로 결정했고 전체 일정을 삭제해야 했습니다. 데비는 이때 msdyn_DeleteCalendar API를 사용합니다.

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"34d2210c-9fb6-eb11-a820-000d3afb1dba\",\"IsVaried\":true}"
}

응답

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

휴가 만들기

팀은 2021년 6월 9일부터 가족 휴가를 위해 3일간 휴가를 갑니다.

요청

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"InnerCalendarDescription\":\"Family Vacation\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T00:00:00.000Z\",\"EndTime\":\"2021-06-17T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":3}]}]}"
}

Response

{
  "InnerCalendarIds": "[\"266c434e-d5be-eb11-a81d-000d3a6e4359\"]"
}

하루 종일 근무 시간 만들기

팀은 2021년 5월 20일부터 72시간 근무합니다. 데비는 msdyn_SaveCalendar API를 사용해 팀의 근무 시간을 생성합니다.

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T00:00:00.000Z\",\"EndTime\":\"2021-05-22T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

응답

{
  "InnerCalendarIds": "[\"6e160a8e-d5be-eb11-a81d-000d3a6e4359\"]"
}

FAQ

"시작시간은 종료시간보다 크거나 같을 수 없습니다."라는 오류가 발생합니다

다른 일정 규칙의 시간대가 겹치지 않는지 확인합니다. 날짜를 확인하여 StartTimeEndTime보다 늦지 않는지 확인합니다. 또한 시간이 24시간 형식을 따르는지 확인합니다.

API를 사용하여 "업무 시간 템플릿" 엔티티를 업데이트할 수 있습니까?

예, 이 API를 사용하여 리소스 업무 시간 외에 업무 시간 템플릿을 만들고 업데이트할 수 있습니다.

다음과 같은 오류를 받았습니다. "Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo 유형의 개체를 역직렬화하는 동안 오류가 발생했습니다. 입력 소스의 형식이 올바르지 않습니다.
or
예상 상태 '요소'.. 이름이 '', 네임스페이스 ''인 '텍스트'가 발견되었습니다."

문자열이 올바르게 구문 분석되었는지 확인합니다. 대괄호, 쉼표 또는 세미콜론이 누락되었을 수 있습니다.

다음과 같은 오류를 받았습니다. "잘못된 반복 패턴입니다. 지원되는 패턴에 대해서는 설명서를 참조하십시오."

현재 FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 패턴만 지원합니다. BYDAY는 더 적은 일수를 포함하도록 변경할 수 있으나, FREQINTERVAL은 변경할 수 없습니다. 패턴에 공백이 없는지 확인합니다.

리소스의 CalendarId 및 InnerCalendarId에 대한 정보는 어떻게 얻습니까?

CalendarId는 리소스 특성에서 검색할 수 있습니다. 다음 정보를 얻으려면 이 호출을 사용하십시오: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

이전 호출의 예는 [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e)입니다.

InnerCalendarId는 일정 특성에서 검색할 수 있습니다. 다음 정보를 얻으려면 이 호출을 사용하십시오: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

이전 호출의 예는 [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules입니다.

중복되는 규칙이 있으면 어떻게 됩니까?

규칙이 적용되는 몇 가지 순위가 있습니다.

  • 순위 1 - 매일 발생(근무/비근무), 및 휴무 발생.
  • 순위 0 - 주간 반복(근무/비근무).

V2 겹침 규칙

  • 순위 1 규칙은 순위 0 규칙보다 우선 순위가 높습니다. 같은 날에 두 개의 규칙(각 순위 중 하나)이 있는 경우 매일 발생 또는 시간 중단 발생이 주간 반복보다 우선합니다.
  • 동일한 날짜 범위 내에 순위 0 규칙이 여러 개 있는 경우:
    • 시간이 교차하지 않으면 둘 다 일정에 남게 됩니다.
    • 시간이 교차하는 경우 가장 최근에 생성/수정된 규칙이 리소스의 일정에 대해 고려됩니다. 날짜 범위의 다른 모든 교차 규칙은 제거됩니다. 일부 순위 0 규칙에 일부 날짜에는 교차가 있지만 다른 날짜에는 교차하지 않는 경우 교차 부분이 제거되는 동안 교차하지 않는 섹션을 유지하기 위해 규칙이 연결됩니다.

V2 캘린더 동작의 예:

예시 1 - 반복 근무 시간: 요일/시간이 겹치지 않고 날짜가 겹치는 경우

지정된 날짜 범위 동안 기술자는 서로 다른 요일에 걸쳐 오전, 오후 또는 야간 교대로 근무합니다.

  1. 지정된 날짜 범위에 대한 첫 번째 반복 일정 규칙을 만듭니다. 예: 월, 화; 1.1-4.1; 동부 표준시 오전 8시~오후 5시 반복.

  2. 근무 시간이 이전 날짜 또는 시간과 교차하지 않도록 하면서 교차하는 날짜 범위에 대한 두 번째 반복 일정 규칙을 만듭니다. 예: 수, 목; 1.1-4.1; 동부 표준시 오전 8시~오후 5시 반복 또는 월, 화; 1.1-4.1; 동부 표준시 오후 5시-오후 8시 반복.

결과: 두 일정 규칙이 모두 유지되고 서로 공존합니다.

예 2 - 반복 근무 시간: 일부 겹치는 날짜, 모든 날짜가 겹치고 두 번째 규칙이 첫 번째 규칙 전후에 시작/종료됨

기술자는 이전 일정의 몇 주를 대체하는 새로운 작업 일정을 받습니다. 계약에 따라 그들은 항상 같은 요일에 매주 일합니다.

  1. 지정된 날짜 범위에 대한 첫 번째 반복 일정 규칙을 만듭니다. 예: 월, 화; 2.1-4.1; 동부 표준시 오전 8시~오후 5시 반복.

  2. 모든 날짜의 작업 시간이 겹치는 날짜 범위에 대해 두 번째 반복 일정 규칙을 만듭니다. 첫 번째 규칙의 시작/종료 날짜 이전 또는 이후인 이 새 규칙의 시작/종료 날짜를 선택합니다. 예: 월, 화; 3.1-5.1; 동부 표준시 오후 1시~오후 8시 반복.

결과: 첫 번째 규칙은 두 번째 규칙의 시작/종료 날짜를 수용하기 위해 잘립니다. 예: 월, 화; 2.1-2.28; 동부 표준시 오전 8시~오후 5시 반복월, 화; 3.1-5.1; 동부 표준시 오후 1시-오후 8시 반복.

예시 3 - 반복 근무 시간: 일부 요일/시간이 겹치고 모든 날짜가 겹치는 경우

기술자는 2개월 고정 계약직 근로자입니다. 이들은 몇 일 동안 추가적인 일을 하기로 합의했습니다. 그들은 화요일 근무 시간을 이전/늦은 시간으로 변경하려고 합니다.

  1. 지정된 날짜 범위에 대한 몇 가지 반복 일정 규칙을 만듭니다. 예: 월, 화; 2.1-4.1; 동부 표준시 오전 8시~오후 12시 반복화, 수; 2.1-4.1, 동부 표준시 오후 1시-오후 5시 반복.

  2. 동일한 날짜 범위에 대해 새 반복 일정 규칙을 만듭니다. 원래 규칙과 부분적으로 겹치는 요일/시간을 선택하십시오. 예: 화, 목 ; 2.1-4.1; 동부 표준시 오전 10시-오후 2시 반복

결과: 새 규칙은 겹치는 부분이 있는 이전 규칙을 덮어쓰고 다른 규칙은 변경되지 않은 상태로 둡니다. 예: 월; 2.1-4.1; 동부 표준시 오전 8시-오후 12시 반복수; 2.1-4.1; 동부 표준시 오후 1시-오후 5시 반복화, 목; 2.1-4.1; 동부 표준시 오전 10시~오후 2시 반복.

예 4 - 반복 근무 시간: 이전 규칙에 포함된 새 규칙 날짜, 일부 겹치는 요일/시간

기술자는 매주 월-금, 오전 8시-오후 5시에 근무합니다. 2주 동안만 매주 월~수요일 오전 6시~오후 6시 근무 시간이 다른 특별 비상 프로젝트를 처리할 예정입니다.

  1. 지정된 날짜 범위에 대한 첫 번째 반복 일정 규칙을 만듭니다. 예: 월, 화, 수, 목, 금; 1.1-종료일 없음 동부 표준시 기준 오전 8시~오후 5시 반복.

  2. 위의 날짜 범위에 포함된 두 번째 반복 캘린더 규칙을 만들고 일부 요일에 겹치는 근무 시간을 선택합니다. 예: 월, 화, 수; 5.1-5.14; 동부 표준시 오전 6시~오후 6시 반복.

결과: 이 연습이 끝날 때까지 달력에는 4개의 반복 규칙이 있어야 합니다.

  • 첫 번째 규칙을 두 번째 규칙의 시작 날짜로 자릅니다
  • 두 번째 일정 규칙
  • 첫 번째 규칙과 유사하지만 겹치지 않는 날짜에 대한 두 번째 규칙의 날짜를 사용하여 새 규칙을 만듭니다
  • 종료 날짜 없이 두 번째 규칙의 종료 날짜부터 시작하도록 첫 번째 규칙을 자름

예: 월, 화, 수, 목, 금; 1.1–4.30; 동부 표준시 오전 8시~오후 5시 반복월, 화, 수; 5.1-5.14; 동부 표준시 오전 6시~오후 6시 반복목, 금, 5.1-5.14; 동부 표준시 오전 8시~오후 5시 반복월, 화, 수, 목, 금; 5.15–종료일 없음, 동부 표준시 오전 8시~오후 5시 반복

예시 5 - 비반복 근무 시간(발생, 1순위 규칙)

기술자에게는 해당 일의 다른 모든 작업 시간 인스턴스보다 우선하는 여러 팀 결속 일수가 있습니다.

  1. 지정된 날짜 범위에 대한 반복 일정 규칙을 만듭니다. 예: 월, 화, 수, 목, 금; 1.1-종료일 없음 동부 표준시 기준 오전 8시~오후 5시 반복.

  2. 위 날짜 범위 내에 포함된 반복되지 않는 일정 규칙을 만듭니다. 일부 요일에 겹치는 근무 시간을 선택하십시오. 예: 비반복; 6.21; 동부 표준시 기준 오전 7시~오후 1시.

결과: 일정에는 연습이 끝날 때까지 1개의 반복되지 않는 규칙(발생)이 있어야 합니다. 반복되지 않는 규칙은 하루 종일 겹치는 반복 이벤트보다 우선합니다. 예: 월, 화, 수, 목, 금 반복; 1.1-종료일 없음(예외: 6.21; 비반복; 6.21; 동부 표준시 오전 7시-오후 1시).

V1 겹침 규칙

  • 순위 1 규칙은 순위 0 규칙보다 우선 순위가 높습니다. 따라서 같은 날에 두 개의 규칙(각 순위 중 하나)이 있는 경우 매일 발생 또는 시간 중단 발생이 주간 반복보다 우선합니다.
  • 순위가 같은 규칙이 두 개 있는 경우 가장 최근에 생성/수정된 규칙이 리소스의 일정에 대해 고려되는 규칙이 됩니다.
  • 종일 발생은 순위 1이므로 발생 근무 시간을 추가하고 존중받을 수 있도록 주간 반복으로 변경하는 것을 고려할 수 있습니다.
  • 근무 시간이 존재하고 그와 겹치는 휴가 발생이 생성될 경우, 규칙은 휴식 시간이 존중되도록 하는 방식으로 분할되며, 근무 시간으로 남은 시간은 그대로 유지됩니다. 예를 들어, 9월 21일 오전 8시부터 오후 5시까지 근무 시간이 있고 9월 21일 오후 3시부터 오후 7시까지의 휴무 발생이 추가되는 경우 오전 8시부터 오후 3시까지 근무 시간 그리고 오후 3시부터 7시까지 휴식 시간으로 처리됩니다. 단, 타임슬롯에 상관없이 반대 순서로 규칙을 생성한 경우(휴식 시간를 먼저 생성한 다음 근무시간 생성) 근무시간만 재선택합니다. 휴식 시간이 무시됩니다.

표준 시간대 코드

열거형 시간대
12 (GMT-12:00) 날짜 변경선 서쪽
1 (GMT+13:00) 사모아
2 (GMT-10:00) 하와이
3 (GMT-09:00) 알래스카
4 (GMT-08:00) 태평양 표준시(미국 및 캐나다)
5 (GMT-08:00) 바하 캘리포니아
6 (GMT-11:00) 협정 세계시-11
7 (GMT-10:00) 알류샨 열도
8 (GMT-09:30) 마르키즈 제도
9 (GMT-09:00) 협정 세계시-09
10 (GMT-07:00) 산지 표준시(미국 및 캐나다)
11 (GMT-08:00) 협정 세계시-08
12 (GMT-07:00) 치와와, 라파스, 마사틀란
15 (GMT-07:00) 애리조나
20 (GMT-06:00) 중부 표준시(미국 및 캐나다)
25 (GMT-06:00) 서스캐처원
29 (GMT-06:00) 과달라하라, 멕시코시티, 몬테레이
33 (GMT-06:00) 중앙 아메리카
34 (GMT-06:00) 이스터 섬
35 (GMT-05:00) 동부 표준시(미국 및 캐나다)
40 (GMT-05:00) 인디애나(동부)
43 (GMT-05:00) 아이티
44 (GMT-05:00) 하바나
45 (GMT-05:00) 보고타, 리마, 키토, 리오 브랑코
47 (GMT-04:00) 카라카스
50 (GMT-04:00) 대서양 표준시(캐나다)
51 (GMT-05:00) 터크스 케이커스
55 (GMT-04:00) 조지타운, 라파스, 산후안
56 (GMT-04:00) 산티아고
58 (GMT-04:00) 쿠이아바
59 (GMT-04:00) 아순시온
60 (GMT-03:30) 뉴펀들랜드
65 (GMT-03:00) 브라질리아
69 (GMT-03:00) 부에노스아이레스
70 (GMT-03:00) 카옌, 포르탈레자
71 (GMT-03:00) 살바도르
72 (GMT-03:00) 생피에르앤드미클롱
73 (GMT-03:00) 그린란드
74 (GMT-03:00) 몬테비데오
75 (GMT-02:00) 중부-대서양
76 (GMT-02:00) 협정 세계시-02
77 (GMT-03:00) 아라구아이나
80 (GMT-01:00) 아조레스
83 (GMT-01:00) 카보베르데 아일랜드
84 (GMT+01:00) 카사블랑카
85 (GMT+00:00) 더블린, 에든버러, 리스본, 런던
90 (GMT+00:00) 몬로비아, 레이캬비크
92 (GMT) 협정 세계시
95 (GMT+01:00) 베오그라드, 브라티슬라바, 부다페스트, 류블랴나, 프라하
100 (GMT+01:00) 사라예보, 스코페, 바르샤바, 자그레브
105 (GMT+01:00) 브뤼셀, 코펜하겐, 마드리드, 파리
110 (GMT+01:00) 암스테르담, 베를린, 베른, 로마, 스톡홀름, 빈
113 (GMT+01:00) 서중앙 아프리카
115 (GMT+02:00) 키시네프
120 (GMT+02:00) 카이로
125 (GMT+02:00) 헬싱키, 키예프, 리가, 소피아, 탈린, 빌뉴스
129 (GMT+02:00) 암만
130 (GMT+02:00) 아테네, 부카레스트
131 (GMT+02:00) 베이루트
133 (GMT+02:00) 다마스커스
134 (GMT+03:00) 이스탄불
135 (GMT+02:00) 예루살렘
140 (GMT+02:00) 하라레, 프리토리아
141 (GMT+02:00) 빈트후크
142 (GMT+02:00) 가자, 헤브론
145 (GMT+03:00) 모스크바, 상트페테르부르크
150 (GMT+03:00) 쿠웨이트, 리야드
151 (GMT+03:00) 민스크
155 (GMT+03:00) 나이로비
158 (GMT+03:00) 바그다드
159 (GMT+02:00) 칼리닌그라드
160 (GMT+03:30) 테헤란
165 (GMT+04:00) 아부다비, 무스카트
169 (GMT+04:00) 바쿠
170 (GMT+04:00) 예레반
172 (GMT+04:00) 포트루이스
173 (GMT+04:00) 트빌리시
174 (GMT+04:00) 이젭스크, 사마라
175 (GMT+04:30) 카불
176 (GMT+04:00) 아스트라한, 울랴노브스크
180 (GMT+05:00) 예카테린부르크
184 (GMT+05:00) 이슬라마바드, 카라치
185 (GMT+05:00) 타슈켄트
190 (GMT+05:30) 첸나이, 콜카타, 뭄바이, 뉴델리
193 (GMT+05:45) 카트만두
195 (GMT+06:00) 아스타나
196 (GMT+06:00) 다카
197 (GMT+06:00) 옴스크
200 (GMT+05:30) 스리자야와르데네푸라 코테
201 (GMT+07:00) 노보시비르스크
203 (GMT+06:30) 양곤(랑군)
205 (GMT+07:00) 방콕, 하노이, 자카르타
207 (GMT+07:00) 크라스노야르스크
208 (GMT+07:00) 바르나울, 고르노알타이스크
209 (GMT+07:00) 호브드
210 (GMT+08:00) 베이징, 충칭, 홍콩 특별 행정구, 우루무치
211 (GMT+07:00) 톰스크
215 (GMT+08:00) 콸라룸푸르, 싱가포르
220 (GMT+08:00) 타이베이
225 (GMT+08:00) 퍼스
227 (GMT+08:00) 이르쿠츠크
228 (GMT+08:00) 울란바토르
229 (GMT+09:00) 평양
230 (GMT+09:00) 서울
231 (GMT+08:45) 유클라
235 (GMT+09:00) 오사카, 삿포로, 도쿄
240 (GMT+09:00) 야쿠츠크
241 (GMT+09:00) 치타
245 (GMT+09:30) 다윈
250 (GMT+09:30) 애들레이드
255 (GMT+10:00) 캔버라, 멜버른, 시드니
260 (GMT+10:00) 브리즈번
265 (GMT+10:00) 호바트
270 (GMT+10:00) 블라디보스토크
274 (GMT+10:30) 로드하우 섬
275 (GMT+10:00) 괌, 포트모르즈비
276 (GMT+11:00) 부건빌 섬
277 (GMT+11:00) 노퍽 섬
278 (GMT+11:00) 사할린
279 (GMT+11:00) 초쿠르다흐
280 (GMT+11:00) 솔로몬 제도, 뉴칼레도니아
281 (GMT+11:00) 마가단
284 (GMT+12:00) 협정 세계시+12
285 (GMT+12:00) 피지
290 (GMT+12:00) 오클랜드, 웰링턴
295 (GMT+12:00) 아나디리, 페트로파블로프스크-캄차스키
299 (GMT+12:45) 채텀 섬
300 (GMT+13:00) 누쿠알로파
301 (GMT-05:00) 체투말
302 (UTC+02:00) 하르툼
303 (GMT-03:00) 푼타아레나스
304 (GMT+04:00) 볼고그라드
305 (GMT-07:00) 유콘