2
5

More than 5 years have passed since last update.

SharePoint の日付と時刻型は UTC で保存されている

Posted at

ブログからの転載

経緯

後輩ちゃんから聞かれました。

「SharePoint にバッチでどうのこうのする実装終わってテストしていたら、日付と時刻型が -9 時間になっていることに気づいて調べたのですが、UTC というものらしく、JST への戻し方を調べていたのですが上手く見つけられなかったです。いい方法知っていますか?」

「私はこうやっているよ」というアウトプットをしますね。

そもそも UTC とは?

UTC は協定世界時というものです。
私の拙い説明をつらつらと並べるより、詳しくは Wikipedia を読んでください。

私達が使っているのが JST で、UTC より 9 時間進んでいます(UTC+9)にです。未来を生きてる日本カッコいい!!

ちなみに、3 ヶ月ほど前に仕事でマレーシアに行きましたが、マレーシアは UTC+8 となっているので、日本とテレカンする時に「朝の 9 時から会議しましょう。 .... ちょっとまって、日本時間で 10 時です!!」というやり取りがありました。海外出張慣れしてないのがバレバレです。

検証環境

検証用で、SharePoint Online に次のリストを作りました。

列名 内部列名 列の型
タイトル Title 1行テキスト
日付と時刻型 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()

ブラウザで確認してみます

予定通りの値が入っているのが確認できます。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5