SharePoint 날짜 및 시간 형식은 UTC에 저장됩니다.

8777 단어 SharePointPowerShell
블로그에서 전재

경위



후배 짱에서 들었습니다.
"SharePoint에 배치로 어떻게 이런 구현이 끝나고 테스트했다면, 날짜와 시간 형식이 -9 시간으로 되어 있다는 것을 알아 차렸습니다. 하지만 잘 찾을 수 없었습니다. 좋은 방법을 알고 있습니까? "

「나는 이렇게 하고 있어」라는 아웃풋을 하는군요.

원래 UTC란?



UTC는 협정 세계시라는 것입니다.
나의 졸린 설명을 힘들게 늘어놓는 것보다, 자세한 것은 Wikipedia (을)를 읽어 주세요.

우리가 사용하고 있는 것이 JST 로, UTC 보다 9 시간 진행하고 있습니다 (UTC+9)에입니다. 미래를 살고있는 일본 멋지다! !

덧붙여서, 3개월 정도 전에 일로 말레이시아에 갔습니다만, 말레이시아는 UTC+8이 되어 있으므로, 일본과 텔레칸 할 때 「아침의 9시부터 회의합시다. .... 잠깐, 일본 시간으로 10시입니다!!」라는 교환이 있었습니다. 해외 출장 익숙하지 않은 것이 발레 발레입니다.

검증 환경



확인을 위해 SharePoint Online에서 다음 목록을 만들었습니다.


열 이름
내부 열 이름
열 유형


제목
Title
한 줄 텍스트

날짜 및 시간 유형
TypeOfDatetime
날짜와 시간


무엇이 문제인가?



조기 이전 목록에 등록된 항목을 PowerShell에서 가져옵니다.

브라우저에서 등록한 데이터



PowerShell에서 얻은 데이터
TypeOfDatetime      Title
--------------      -----
2018/06/16 15:00:00 テスト1 
2018/06/17 3:00:00  テスト2 
2018/06/17 8:00:00  テスト3 
2018/06/17 14:00:00 テスト4 

시간이 9 시간 어긋나요.

그런 다음 PowerShell에서 데이터 1개를 등록해 봅니다.
※코드 발췌
$item = $list.AddItem((New-Object Microsoft.SharePoint.Client.ListItemCreationInformation))
$item["Title"] = "PowerShell Add1"
$item["TypeOfDatetime"] = "2018/07/01 00:00:00"
$item.Update()
$ctx.ExecuteQuery()

브라우저에서 확인하면 등록한 데이터에 +9시간이 됩니다.2018/07/01 00:00:00 로 등록하고 싶은데 곤란하네요.



다음은 사이트 설정 → 지역 설정에서 시간대를 변경해 봅니다.



시간대를 UTC+8로 변경한 후 브라우저에서 확인하면 등록한 데이터에 +8시간이 되어 있는 것을 확인할 수 있습니다.



즉, SharePoint Online 측의 설정에 따라 시간대를 함께 등록해야 합니다.

어떻게 할까?



모범 사례인지 확실하지 않지만 나는 이렇게합니다.
$datetime = $ctx.Web.RegionalSettings.TimeZone.LocalTimeToUTC("2018/07/01 00:00:00")
# サーバーに時間を問い合わせる
$ctx.ExecuteQuery()

$item = $list.AddItem((New-Object Microsoft.SharePoint.Client.ListItemCreationInformation))
$item["Title"] = "PowerShell Add2"
$item["TypeOfDatetime"] = $datetime.value
$item.Update()
$ctx.ExecuteQuery()

브라우저에서 확인해 봅니다.



예정대로 값이 포함되어 있는지 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기