0

私はPHPで作業しておりOutlook Calendar REST API、イベントを作成するためにAPIに指定した日付が11時間増加し、end_dateにも問題があることを除いて、イベントを正常に作成できます。たとえば、APIにからイベントを作成する から から2014-03-31T15:00:00-0000イベントを2014-03-31T16:00:00-0000作成することになります2014-04-01T02:00:00+11002014-04-01T02:30:00+1100

これは私のAPI URLがどのように見えるかです

https://apis.live.net/v5.0/9898ef90931244e8/events?name=testing_event&description=event_description&start_time=2014-03-31T15:00:00-0000&end_time=2014-03-31T16:00:00-0000&access_token=token-goes-here&method=POST

最後にを削除する-0000と、次のエラーが発生します

{
   "error": {
      "code": "request_parameter_invalid", 
      "message": "The value of input parameter 'start_time' isn't valid. The expected formats for this parameter are the following: '1970-01-01T00:00:00Z', '1970-01-01T00:00:00.000Z', '1970-01-01 00:00:00Z'. In all cases, 'Z' is interchangeable with a time zone offset of the form: '+00:00', '-00:00', '+0000' or '-0000'."
   }
}

これを修正するために何日も費やしてきたので、どんな助けにも本当に感謝します..

4

1 に答える 1

0

少し前にこの質問を MSDN フォーラムに投稿しましたが、忘れていました。今日、私は質問にアクセスしました。これは、UTC タイムゾーンを理解する方法を説明する Outlook チームからの返信です。同じ問題で立ち往生している誰かを助けることを願っています。これをドキュメントに含めてほしいと思います。これは私が抱えていた問題を修正しました


*日付の ISO 8601 形式は少しわかりにくい場合があります。あなたの応答で見ているものは実際には正しいです。カレンダー サービスは日付を受け取り、それをユーザーのタイム ゾーンにマップします。

「2014-03-31T15:00:00-0000」は、2014 年 3 月 31 日の午後 3 時を意味し、UTC 時間に変換するために 0 時間 0 分を調整します。つまり、これは基本的に UTC 時間です。カレンダー サービスは、これをイベントを作成しているユーザーのローカル タイム ゾーンに変換します。「2014-04-01T02:00:00+1100」は、ユーザーがいるタイムゾーンに関係なく、2014 年 4 月 1 日の午前 2 時を意味します。UTC に戻すには、現地時間からオフセットを減算する必要があります。したがって、2014 年 4 月 1 日午前 2 時は、UTC より 11 時間早い、2014 年 3 月 31 日午後 3 時 (入力した時刻) にマップされます。

Z を使用している場合は、基本的に UTC 時刻を指定していることを意味します。したがって、イベントの目的の時間を取得するには、目的の時間を取り、対応する UTC 時間を把握する必要があります。したがって、ユーザーの UTC オフセットが +1100 の場合、UTC 時間を計算するには、イベントの現地時間からそのオフセットを差し引く必要があります。あなたの場合、これは 2014-03-31T04:00:00Z になると思います。これは実際には、自分で方法を見つけようとするのではなく、コーディングに任せるのが最善の方法です。http://isdk.dev.live.comの「Creating Calendar Events」サンプルを見ると、JavaScript でこれを行う方法が示されています。おそらく、同等の PHP があるかもしれません。


于 2014-04-29T17:32:40.860 に答える