Exchange Web Service 3月1日にだけ起こる問題について情報が上がっていました

今年は4年に一度の冬季オリンピックイヤーでしたが、同じく4年に一度のみ起こる珍しい問題がExchange blogで紹介されていました。

予定表アイテムをうるう日を跨いで取得する際の注意点 – Exchange ブログ JAPAN

内容としては、EWSを使って3月1日~2年後の3月1日のカレンダーの予定を取得しようとすると、データが2年を超えて取れないとエラーが表示されるというものです。

しかもこれが起こるタイミングは、2018年3月1日からの2年取得時など、2年後がうるう日になる日の0:00~9:00の指定を行ったときのみ。かなりレアな感じで起こる問題です。

JSTで指定した場合は内部でUTCに変換し、年限の計算を行う実装とのことで、3月1日=2月28日またはうるう年の場合2月29日に変換され、その期間が2年以内になっているかを判断する実装となっていて、期間の終了日がうるう日かつ最大期間の2年でデータを取得するケースでのみ発生します。

内部でUTC変換を行っているものの、取得する期間はJSTでした時間でデータが取れるため、とても気が付きにくい問題となっています。

この問題はExchange Onlineのみならず、Exchange 2013でも起こることを確認しました。

EWSで予定表を確認する機能を実装しているケースは多々あると思うので、実装は注意しておきましょう。

音楽:pilgrim snow