我正在通过他们的 API 将日期/时间值推送到 HubSpot CRM 系统中。对于日期/时间值,HS API 需要 UNIX 格式,它是从 Epoch (1/1/1970 12:00 AM) 开始的毫秒数。[HubSpot 文档:https://developers.hubspot.com/docs/faq/how-should-timestamps-be-formatted-for-hubspots-apis]
但是我的日期表示不正确。我正在从 EST 中的 SQL 数据库中提取日期,并执行以下转换:
string dbValue = "2019-02-03 00:00:00";
DateTime dt = Convert.ToDateTime(dbValue);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
long apiValue = Convert.ToInt64(dt.Subtract(epoch).TotalMilliseconds);
但是,在 HubSpot 中,日期字段显示2/2/2019. HubSpot 中的时区设置为 UTC -4 东部时间。
似乎存在一些转换问题,但我不知道如何纠正它。我试过在转换为 long 之前使用DateTime.SpecifiyKind显式设置为本地:dt
dt = DateTime.SpecifyKind(dt, System.DateTimeKind.Local);
但这也没有用。我尝试做一个基本测试:
var dt1 = new DateTime(2019, 4, 1, 12, 0, 0, DateTimeKind.Local);
var dt2 = new DateTime(2019, 4, 1, 12, 0, 0, DateTimeKind.Utc);
Console.WriteLine(dt1.Subtract(dt2).TotalSeconds);
但结果是0。我在 CST,我预计会有 5 小时的差异。我觉得我在这里缺少一些关于 DateTimes 如何在 C# 中工作的基本概念。
宝慕林4294392
相关分类