Marketo - REST API 日期时间字段错误

Marketo - REST API datetime field is wrong

我将以下字符串发送到 Marketo REST API 以设置为 datetime 字段的值:

"2010-05-07T15:41:32"

但 Marketo 将其显示为:

May 6, 2010 8:00 PM

我有什么遗漏吗?

要妥善处理DateTime总是有点棘手。

很可能有两个,但相关问题在这里:

  • 您使用的 datetime 字符串的格式与 Marketo 期望的格式不完全相同。
  • 您所在的时区与 Marketo 使用的内部时区不同。

幸运的是,您可以轻松克服这个问题。
datetime 字符串的确切格式应遵循 ISO 8601 标准,如文档的 Field Types 部分所述。该规范的一个重要部分是时区偏移量,它遵循“正常”datetime 部分作为与格林威治时间的差异,形式为 ±hh:mm。因此,根据您所在的时区,您的日期字符串应如下所示:2017-05-08T08:08:08+02:00。 (其中 +02:00 代表中欧。)

如果您使用 PHP,获得此格式的最简单方法是使用 c 完整 Date/Time 格式,如下所示:

$date = new DateTime('2010-05-07 15:41:32', new DateTimeZone('Europe/Budapest'));
$dateString = $date->format('c');

var_dump($dateString);
// outputs: '2017-05-08T08:08:08+02:00'