開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2023年2月10日 (金)

APIで日時フィールドに登録・更新する際のデータ形式について

ver.2 の API で日時フィールドに登録・更新する際、単純な日時形式でリクエストを行った場合はエラーになってしまいます。
こちらの記事では、どのようなデータ形式でリクエストを行えばよいか解説いたします。

はじめに

APIで日時を登録・更新するPHPのサンプルコードや権限の設定方法などは、こちらの特集で扱ってしますのでよろしければご参照ください。

2022年8月31日(水)
APIメソッドごとのサンプルコード&権限設定特集

データ形式に関して

UTC形式
2023-01-01T09:00:00Z

※「T」は時間要素の始まりを示します。
※「Z」は GMT(グリニッジ標準時)の特別な指定方法です。
ver.2のログインアカウントのタイムゾーン設定によって、アプリ利用画面での日時表示は異なります。
例えば、タイムゾーンが日本時間(JST)の場合は、UTCで登録した日時からJST変換されて表示されます。
そのためAPIで日本時間(JST)の現在日時を登録したい時は、一度UTCに変換してリクエストする必要があります。
日時+タイムゾーン形式
// 以下全て日本時間で 2023/01/01 09:00:00 を表します

2023-01-01T09:00:00+09:00

2023-01-01T09:00+09:00
日時とタイムゾーンを指定してのリクエストも可能です。
秒は省略でき、省略した場合は「00」として扱われます。

「+09:00」とすることでタイムゾーンを日本時間で指定してリクエストできます。
ログインアカウントのタイムゾーンも同じく日本時間の場合は、タイムゾーンの前の記載した日時がそのままアプリ利用画面でも表示されるため、リクエストの際にも分かりやすい形式になっています。

ですのでアカウントのタイムゾーン設定が日本時間の場合は、タイムゾーンを日本時間に指定してリクエストする形式が変換なども必要なく扱いやすいです。
// APIリクエスト形式
2023-01-01T09:00:00+09:00

// アプリ利用画面表示形式
2023/01/01 09:00:00

現在日時をAPIのデータ形式に変換する方法

PHPで現在日時を取得して、それをAPIでリクエスト可能なデータ形式に変換する方法を記載いたします。
<?php
// 現在日時を取得
$date = date("Y-m-d H:i:s");

// APIの日時データ形式に変換(JST)
$apiDate = dateTimeConvert($date);

function dateTimeConvert($d) {
    $d = str_replace(" ", "T", $d);
    $d = $d. "+09:00:00";
    return $d;
}
?>
日本時間のデータ形式に変換する関数を作成しておりますので、こちらの関数を使用することで日時データ形式の変換することができます。
現在日時以外でも日時形式を「Y-m-d H:i:s」に揃えて使用することで変換可能です。

最後に

分かってしまえば簡単ですが、はじめはつまずくポイントだと思いますのでこちらの記事が参考になれば幸いです。
記載内容の不備や他に知りたい点等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
解決しない場合はこちら コンテンツに関しての
要望はこちら