다음을 통해 공유


Win32_TimeZone 클래스

Win32_TimeZoneWMI 클래스는 Windows를 실행하는 컴퓨터 시스템의 표준 시간대 정보를 나타내며, 여기에는 일광 절약 시간제로 전환하는 데 필요한 변경 내용이 포함됩니다.

다음 구문은 MOF(Managed Object Format) 코드를 단순화한 것으로 상속된 속성이 모두 포함되어 있습니다. 속성 및 메서드는 MOF 순서가 아닌 알파벳순입니다.

구문

[Dynamic, Provider("CIMWin32"), UUID("{8502C4EC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_TimeZone : CIM_Setting
{
  string Caption;
  string Description;
  string SettingID;
  sint32 Bias;
  sint32 DaylightBias;
  uint32 DaylightDay;
  uint8  DaylightDayOfWeek;
  uint32 DaylightHour;
  uint32 DaylightMillisecond;
  uint32 DaylightMinute;
  uint32 DaylightMonth;
  string DaylightName;
  uint32 DaylightSecond;
  uint32 DaylightYear;
  uint32 StandardBias;
  uint32 StandardDay;
  uint8  StandardDayOfWeek;
  uint32 StandardHour;
  uint32 StandardMillisecond;
  uint32 StandardMinute;
  uint32 StandardMonth;
  string StandardName;
  uint32 StandardSecond;
  uint32 StandardYear;
};

멤버

Win32_TimeZone 클래스에는 다음과 같은 유형의 멤버가 있습니다.

속성

Win32_TimeZone 클래스에는 이러한 속성이 있습니다.

바이어스

데이터 형식: sint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| Bias"), 단위 ("분")

현지 시간 번역에 대한 현재 바이어스입니다. 바이어스는 UTC(협정 세계시)와 현지 시간의 차이입니다. UTC와 현지 시간 간의 모든 번역은 UTC = 현지 시간 - 바이어스 수식을 기반으로 합니다. 이 속성은 필수입니다.

캡션

데이터 형식: string

액세스 형식: 읽기 전용

한정자: MaxLen(64)

현재 개체에 대한 간단한 텍스트 설명입니다.

이 속성은 CIM_Setting 상속됩니다.

DaylightBias

데이터 형식: sint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightBias"), 단위 ("분")

일광 절약 시간 동안 발생하는 현지 시간 번역 중에 사용할 바이어스 값입니다. DaylightDay 속성에 대한 값이 제공되지 않으면 이 속성은 무시됩니다. 이 속성의 값이 Bias 속성에 추가되어 일광 절약 시간 동안 사용되는 바이어스 형식입니다. 대부분의 표준 시간대에서 이 속성의 값은 -60입니다.

DaylightDay

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wDay")

이 운영 체제에서 표준 시간에서 일광 절약 시간으로의 전환이 발생하는 DaylightMonthDaylightDayOfWeek입니다.

예: 전환일(DaylightDayOfWeek)이 일요일에 발생하는 경우 값 "1"은 DaylightMonth의 첫 번째 일요일을 나타내고 "2"는 두 번째 일요일 등을 나타냅니다. 값 "5"는 월의 마지막 DaylightDayOfWeek 을 나타냅니다.

DaylightDayOfWeek

데이터 형식: uint8

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wDayOfWeek")

운영 체제에서 표준 시간에서 일광 절약 시간으로의 전환이 발생하는 요일입니다.

일요일 (0)

월요일 (1)

화요일 (2)

수요일 (3)

목요일 (4)

금요일 (5)

토요일 (6)

예: 1

DaylightHour

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wHour")

운영 체제에서 표준 시간에서 일광 절약 시간으로의 전환이 발생하는 시간입니다.

예: 2

DaylightMillisecond

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wMilliseconds")

운영 체제에서 표준 시간에서 일광 절약 시간으로의 전환이 발생하는 경우 DaylightSecond 의 밀리초입니다.

DaylightMinute

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wMinute")

운영 체제에서 표준 시간에서 일광 절약 시간으로의 전환이 발생하는 DaylightHour 의 분입니다.

예: 59

DaylightMonth

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wMonth")

운영 체제에서 표준 시간에서 일광 절약 시간제로 전환되는 월입니다.

1월 (1)

2월 (2일)

3월 (3일)

4월 (4일)

5월 (5일)

6월 (6일)

7월 (7일)

8월 (8일)

9월 (9일)

10월 (10일)

11월 (11일)

12월 (12일)

DaylightName

데이터 형식: 문자열

액세스 형식: 읽기 전용

한정자: MaxLen (256), MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightName")

일광 절약 시간이 적용되는 경우 표시되는 표준 시간대입니다.

예: "EDT"(동부 일광 절약 시간)

DaylightSecond

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wSecond")

표준 시간에서 일광 절약 시간으로의 전환이 운영 체제에서 발생하는 경우 DaylightMinute 의 두 번째입니다.

예: 59

DaylightYear

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| DaylightDate|wYear")

일광 절약 시간이 적용되는 연도입니다. 이 속성은 필요하지 않습니다.

예: 1997

설명

데이터 형식: 문자열

액세스 형식: 읽기 전용

현재 개체에 대한 텍스트 설명입니다.

이 속성은 CIM_Setting 상속됩니다.

SettingID

데이터 형식: string

액세스 형식: 읽기 전용

한정자: MaxLen(256)

현재 개체가 알려진 식별자입니다.

이 속성은 CIM_Setting 상속됩니다.

StandardBias

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardBias"), 단위 ("분")

일광 절약 시간이 적용되지 않을 때 사용할 바이어스 값입니다. StandardDay에 대한 값이 제공되지 않으면 이 속성은 무시됩니다. 이 속성의 값은 표준 시간 동안 바이어스 형성을 위해 Bias 속성에 추가됩니다.

예: 0

StandardDay

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wDay")

운영 체제에서 일광 절약 시간에서 표준 시간으로 전환되는 경우 StandardMonthStandardDayOfWeek입니다.

전환일(StandardDayOfWeek)이 일요일에 발생하는 경우 값 "1"은 StandardMonth의 첫 번째 일요일을 나타내고 , "2"는 두 번째 일요일 등을 나타냅니다. 값 "5"는 월의 마지막 StandardDayOfWeek 을 나타냅니다.

StandardDayOfWeek

데이터 형식: uint8

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wDayOfWeek")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 요일입니다.

일요일 (0)

월요일 (1)

화요일 (2)

수요일 (3)

목요일 (4)

금요일 (5)

토요일 (6)

StandardHour

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wHour")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 하루 중 시간입니다.

예: 11

StandardMillisecond

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wMilliseconds")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 경우 StandardSecond 의 밀리초입니다.

StandardMinute

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wMinute")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 StandardDay 의 분입니다.

예: 59

StandardMonth

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wMonth")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 월입니다.

1월 (1)

2월 (2)

3월 (3)

4월 (4)

5월 (5)

6월 (6일)

7월 (7)

8월 (8)

9월 (9)

10월 (10일)

11월 (11일)

12월 (12일)

StandardName

데이터 형식: 문자열

액세스 형식: 읽기 전용

한정자: , MaxLen (256), MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardName")

표준 시간이 적용될 때 표시되는 표준 시간대의 이름입니다.

예: "EST"(동부 표준시)

StandardSecond

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wSecond")

운영 체제에서 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 경우 StandardMinute 의 두 번째입니다.

예: 59

StandardYear

데이터 형식: uint32

액세스 형식: 읽기 전용

한정자: MappingStrings ("Win32API| 시간 구조| TIME_ZONE_INFORMATION| StandardDate|wYear")

표준 시간이 적용되는 연도입니다. 이 속성은 필요하지 않습니다.

예: 1997

설명

Win32_TimeZone 클래스는 CIM_Setting 파생됩니다.

WMI 쿼리를 작성할 때는 표준 날짜-시간 형식(예: 2002년 10월 18일)을 사용할 수 없습니다. 대신 쿼리에 사용된 날짜를 UTC 형식으로 변환해야 합니다. 이를 위해서는 두 단계가 필요합니다. 1) 표준 시간대와 그리니치 평균 시간 사이의 오프셋(분 단위 차이)과 2) 10/18/2002를 UTC 값으로 변환해야 합니다.

그리니치 평균 시간의 오프셋 결정

WMI는 날짜와 시간을 사용하는 것을 어렵게 만듭니다. 다행히 WMI를 사용하면 적어도 표준 시간대와 그리니치 평균 시간 간의 오프셋을 쉽게 확인할 수 있습니다. WMI 클래스 Win32_TimeZone GMT 오프셋을 반환하는 속성인 Bias를 포함합니다.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 Wscript.Echo "Offset: "& objTimeZone.Bias
Next

날짜를 UTC 값으로 변환

GMT 오프셋을 확인한 후 2002년 10월 18일과 같은 표준 날짜를 UTC 날짜로 변환해야 합니다. 표준 날짜를 UTC 날짜로 변환하려면 Year, Month 및 Day와 같은 VBScript 날짜 함수를 사용하여 UTC 날짜를 구성하는 개별 구성 요소를 격리할 수 있습니다. 이러한 구성 요소에 대한 개별 값이 있으면 다른 문자열 값과 동일한 방식으로 연결할 수 있습니다. UTC 날짜는 끝에 GMT 오프셋을 추가해야 하므로 문자열로 처리됩니다. 날짜가 숫자로 표시된 경우 이 값은 다음과 같습니다.

20011018113047.000000-480

수학 방정식(명확성을 위해 추가된 괄호)으로 잘못 처리됩니다.

(20011018113047.000000) - (480)

예를 들어 2002년 10월 18일 날짜의 개별 구성 요소는 다음과 같습니다.

  • 연도: 2002년
  • 월: 10
  • 일: 18

스크립트는 UTC 날짜를 파생하기 위해 "113047.0000000" 문자열(시간(밀리초 포함) 및 GMT 오프셋이라는 세 가지 값을 결합해야 합니다. 예를 들어(명확성을 위해 괄호가 다시 추가됨):

(2002) & (10) & (18) & (113047.000000) & (-480)

참고

VBScript 함수 Hour, Minute 및 Second를 사용하여 UTC 날짜의 시간 부분을 변환할 수 있습니다. 따라서 오전 11시 30분 47분과 같은 시간은 113047 변환됩니다.

 

한 가지 복잡한 요소가 있습니다. 월은 문자열에서 5 및 6 위치를 차지해야 합니다. 이날은 7위와 8위를 차지해야 합니다. 10개월과 18일차에는 아무런 문제가 없습니다. 하지만 필요한 직책을 채우려면 7월 5일(7개월, 5일차)을 어떻게 받을 수 있을까요? 대답은 각 값에 선행 0을 추가하여 7에서 07로, 5에서 05로 변경하는 것입니다.

이렇게 하려면 VBScript Len 함수를 사용하여 월과 날짜의 길이(문자 수)를 검사. 길이가 1이면(문자가 하나만 있음) 앞에 0을 추가합니다. 따라서:

If Len(dtmMonth) = 1 Then
    dtmMonth = "0" & dtmMonth
End If

예제

다음 VBScript 예제에서는 현재 날짜를 UTC 날짜로 변환합니다.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = Date
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

다음 VBScript는 GMT 오프셋을 샘플링한 다음 지정된 현재 날짜(이 경우 2002년 10월 18일)를 UTC 날짜-시간 형식으로 변환합니다. 날짜가 변환된 후 해당 값은 컴퓨터를 검색하는 데 사용되며 2002년 10월 18일 이후에 만들어진 모든 폴더 목록을 반환합니다.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = "10/18/2002"
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

Set colFolders = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_Directory WHERE CreationDate < '" & _
 dtmtargetDate & "'")
For Each objFolder in colFolders
 Wscript.Echo objFolder.Name
Next

다음 VBScript 코드 예제에서는 Win32_TimeZone 인스턴스에 대한 설정을 표시합니다.

Dim arDayOrWeek(7)
arDayOrWeek(0) = "Sunday"
arDayOrWeek(1) = "Monday"
arDayOrWeek(2) = "Tuesday"
arDayOrWeek(3) = "Wednesday"
arDayOrWeek(4) = "Thursday"
arDayOrWeek(5) = "Friday"
arDayOrWeek(6) = "Saturday"

Dim arMonth(13)
arMonth(1) = "January"
arMonth(2) = "Feburary"
arMonth(3) = "March"
arMonth(4) = "April"
arMonth(5) = "May"
arMonth(6) = "June"
arMonth(7) = "July"
arMonth(8) = "August"
arMonth(9) = "September"
arMonth(10) = "October"
arMonth(11) = "November"
arMonth(12) = "December"

strComputer = "."
wmiQuery = "Select * from Win32_TimeZone"
Set objWMIService = GetObject("winmgmts:\\" & _
    strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery(wmiQuery)

For Each objItem in colItems
    WScript.Echo "Day of Week setting is: " _
        & objItem.dayLightDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.DaylightHour 
    WScript.Echo "Month: " & objItem.DaylightMonth _
        & " which is: " & arMonth(objItem.DaylightMonth )
    WScript.Echo "Description: " & objItem.DaylightName 
    WScript.Echo "The transition from DLS to Standard occurs: " 
    WScript.Echo "Day of Week setting is: " _
        & objItem.standardDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.StandardHour 
    WScript.Echo "Month: " & objItem.StandardMonth _ 
        & " which is: " & arMonth(objItem.StandardMonth )
    WScript.Echo "Description: " & objItem.StandardName 
Next

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
네임스페이스
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

추가 정보

CIM_Setting

운영 체제 클래스

SWbemDateTime

날짜 및 시간 형식

WMI 작업: 날짜 및 시간