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'
我将以下字符串发送到 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'