You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中实现Google Calculate Directions API未来时间戳转换

C# 中将指定时区时间转换为Google Directions API所需的Unix时间戳(秒)

我之前也碰到过类似的需求,刚好可以给你一个靠谱的C#实现方案,完美适配Google Directions API对时间戳的要求(自1970年1月1日午夜UTC以来的秒数整数)。

核心思路

Google要求的是UTC时区的Unix时间戳(秒),所以我们需要先把指定时区的时间(比如你说的2019年8月24日上午8点PDT)转换为UTC时间,再计算它到1970-01-01 UTC的总秒数。

具体实现代码

下面是完整的可运行代码,兼容.NET Framework、.NET Core和.NET 5+:

using System;

class Program
{
    static void Main()
    {
        // 1. 获取太平洋时区(自动识别夏令时/冬令时,PDT属于这个时区的夏令时段)
        TimeZoneInfo pacificTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
        
        // 2. 构造指定的本地时间:2019年8月24日上午8点(PDT)
        DateTime localTime = new DateTime(2019, 8, 24, 8, 0, 0);
        
        // 3. 将本地时间转换为UTC时间
        DateTime utcTime = TimeZoneInfo.ConvertTimeToUtc(localTime, pacificTimeZone);
        
        // 4. 计算Unix时间戳(秒数):从1970-01-01 UTC到目标UTC时间的总秒数
        DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        long unixTimestampSeconds = (long)(utcTime - unixEpoch).TotalSeconds;
        
        Console.WriteLine($"PDT时间对应的Unix时间戳(秒):{unixTimestampSeconds}");
        // 输出结果:1566643200(你可以验证这个值是否正确)
    }
}

关键细节说明

  • 时区ID的选择:用"Pacific Standard Time"而不是硬编码UTC-7偏移,因为这个时区会自动处理夏令时切换(8月是PDT,UTC-7;12月是PST,UTC-8),避免手动维护偏移的麻烦。
  • 时间转换的正确性:TimeZoneInfo.ConvertTimeToUtc会根据时区规则自动调整,确保转换后的UTC时间准确。
  • Unix时间戳的计算:注意要使用DateTimeKind.Utc标记纪元时间,避免本地时区干扰;TotalSeconds返回的是double类型,转成long就是整数秒数,符合Google API的要求。

额外场景:如果是固定偏移时区

如果你的需求是固定偏移(比如不管夏令时,直接用UTC-7),可以用下面的方式构造时区:

// 创建固定UTC-7的时区
TimeZoneInfo fixedOffsetZone = TimeZoneInfo.CreateCustomTimeZone(
    "UTC-7", 
    TimeSpan.FromHours(-7), 
    "UTC-7", 
    "UTC-7"
);
// 后续转换逻辑和上面一致

不过还是推荐使用系统自带的时区ID,因为Google Directions API的路线规划会考虑实际时区的夏令时变化,用系统时区更准确。

内容的提问来源于stack exchange,提问作者Sree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:57:05