Skip to main content
September 4, 2018

カスタムアクティビティの追加したDatetimeフィールド時刻がズレてしまう

  • September 4, 2018
  • 3 replies
  • 174 views

初めての投稿です。COMSQ津幡と申します。どうぞよろしくお願いいたします。

API経由でカスタムアクティビティ登録をすると、データタイプが「日時」のフィールドに対して、API仕様とおりISO8601形式で日時をセットしても、14時間ずれて値が入ってしまいます。

activityDateは値がちゃんと入りますが、追加したカスタムアクティビティ・[datetime]フィールドのみ、-14時間ズレてしまうのです。

http://developers.marketo.com/rest-api/lead-database/fields/field-types/

例えば、以下のようなデータを送った場合、アクティビティ詳細では14時間ずれて表示されます。

```

"input":[

  {

     "leadId":1220568,

     "activityDate":"2018-09-03T18:20:09+0900",

     "activityTypeId":100011,

     "primaryAttributeValue":"test",

     "attributes":[

        {

           "apiName":"productId",

           "value":"p00001"

        },

        {

           "apiName":"startDateTime",

           "value":"2018-09-03T18:20:04+0900" ---> 表示が「2018-09-03 04:20:04」と-14時間ずれる

        },

        {

           "apiName":"endDateTime",

           "value":"2018-09-03T18:25:06+0900" ---> 表示が「2018-09-03 04:25:06」と-14時間ずれる

        }

     ]

  }

]

```

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

3 replies

Taishi_Yamada
Level 6
September 4, 2018

@貴久 津幡 さん、こんにちは

↓少し前の投稿ですが、こちらにそれに関連した投稿がされていますね。

残念ながら設定したTimeZoneでの表示に対応していないようです。

(まぁ、マルケトでは、Local Timezone表示にならない箇所が何箇所かありますが、そのうちの1つですね。。。)

恐らく現在も対応していないのだと推測されます。

-Yamada

September 10, 2018

こんにちは、freeeの嶋田です。

ですです、TimeZone CSTでdatetime持っているみたいです。date形式のときは大丈夫なんですが、マイトークンでdatetimeにして、さらにそれをお客様のメールにトークンで差し込むときには14時間ずらしてあげないとだめなんですよね。弊社ではこんな感じでトークン入れてました。(今回はcustomアクティビティなのでちょっと違う話ですね。すみません。)

#set ($dateObj = $convert.parseDate(${lead.フィールド名}, 'yyyy-MM-dd hh:mm'))

#set ($diff = $dateObj.getTime() + 60 * 60 * 14 * 1000) ##Plus 14 hours in ms from the current date

$dateObj.setTime($diff) ##update the date

$date.format("EEEE',' MMMMM d 'at' h:mm a", $dateObj) ##Final formatted output of the date

Level 2
September 12, 2018

嶋田様

Sunityの西田です。いつもお世話になります。

丁度時刻系でタイムゾーンがらみで同じところで躓いていたのですが、

内部のTimezoneは正確には「CST6CDT」というもので持っているかと思います。

メールスクリプトで

#set( $inTimeZone = $date.getTimeZone() )

${inTimeZone}

ってやったらそれっぽいのが見れました。

そうするとCDTはサマータイムがあるため、

サマータイム中は時差が14時間、サマータイム終了後は15時間なので

単に14時間足すだけだとサマータイム終了後に時間がずれるかもしれません。

サマータイムの期間はこちら曰く、

「3月の第2日曜日午前2:00~11月第1日曜日午前2:00に延長されています。

 2018年のサマータイムは3月11日(日)に始まり、11月4日(日)に終了します。」

とのことです。

参考までに、既存日時のフィールドから30日後を取得する

メールスクリプトを添付いたします。

データをフィールドから取得するときはタイムゾーンに$date.getTimeZone() を使って、

出力するときは$date.getTimeZone().getTimeZone('Asia/Tokyo')を使うと

うまくできました。

こないだ調べたばかりのにわかの知識なので、

なにかおかしなところあったらどなたか教えてくださいませ…。

これを機に俄然サマータイム導入反対派になりましたw。

September 12, 2018

@Sunity西田 正洋​
おおおお!さすが、めっちゃ使ってらっしゃいますね!:)

勉強になります!!

サマータイムって普及してるのでなんかもう少しわかりやすくできてほしいですねww

昌徳_山田1
September 10, 2018

コムスクエア山田です。

サポート回答としても、

現在もIdeasにご投票を。との取り扱いでしたのでお知らせします。

https://nation.marketo.com/ideas/9240