两次之间经过的小时数,与国家/地区和时区无关

2024-03-01

我们如何确定两次之间经过的小时数。例如:

旧金山下午 3:30,迪拜下午 7:30

我不清楚的部分是,是否存在通过考虑时区和国家来计算减去的时间跨度的通用方法。

我使用 C# 作为主要语言。任何帮助将不胜感激。

提前致谢。


您询问的是:

“旧金山下午 3:30,迪拜下午 7:30”

如果您只知道时间和地点,那么您就会遇到问题,因为并非所有时区都是固定实体。迪拜固定为 UTC+4,但旧金山在太平洋标准时间 UTC-8 和太平洋夏令时间 UTC-7 之间交替。所以一个date也需要进行此转换。

下面将为您提供使用差异current第一个时区的日期:

TimeZoneInfo tz1 = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
TimeZoneInfo tz2 = TimeZoneInfo.FindSystemTimeZoneById("Arabian Standard Time");

DateTime today = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz1).Date;

DateTime dt1 = new DateTime(today.Year, today.Month, today.Day, 15, 30, 0); // 3:30 PM
DateTime dt2 = new DateTime(today.Year, today.Month, today.Day, 19, 30, 0); // 7:30 PM

TimeSpan elapsed = TimeZoneInfo.ConvertTimeToUtc(dt1, tz1) -
                   TimeZoneInfo.ConvertTimeToUtc(dt2, tz2);

(注意,身份证"Pacific Standard Time"是美国太平洋时区的 Windows 时区标识符,尽管有名称,但涵盖 PST 和 PDT。)

但即使这也不一定是最好的方法,因为“今天”在所有时区都不相同。在(几乎)任何时间点,全球范围内都有两个不同的运营日。这个插图来自维基百科 http://en.wikipedia.org/wiki/International_Date_Line很好地证明了这一点。

                                                        Date Animation

源时区的“当前”日期可能是not当前结束时区的同一日期。如果没有额外的输入,您对此无能为力。您需要知道每个值的相关日期。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两次之间经过的小时数,与国家/地区和时区无关 的相关文章

随机推荐

  • 在无需访问 Internet 的情况下从 EC2 实例使用 AWS CLI

    有没有办法使用AWS CLI从EC2 linux实例调用不同的服务 例如SQS EC2 SNS 调用 AWS CLI 命令的 EC2 实例无法访问互联网 它位于私有子网中 它不使用互联网网关或 NAT Thanks 不可能 CLI 必须访问
  • 棘手的 CRC 算法

    我正在尝试找到适用于以下结果的 crc 字节串由 2 个字节组成 即 0xCE1E crc 是单个字节 即 0x03 byte crc CE1E 03 CE20 45 CE22 6F 0000 C0 0001 D4 FFFF 95 有人可以
  • Perl 的未来? (Perl 6,就业能力)

    我发现了一些相关的问题 比如Python 与 Perl https stackoverflow com questions 150043 python v perl 现已删除 和Perl 值得吗 https stackoverflow co
  • Google 地图上的多个标记:仅显示最后一个标记

    我在地图上显示多个标记时遇到问题 该代码首先循环遍历一个数组 然后对纬度 经度值进行反向地理编码 然后显示标记并将 infoWindow 的内容设置为返回的地址 我的代码如下 for var i 0 i lt useNowArray len
  • @tailrec 如何工作

    我已经使用并阅读了 tailrec注释具有尾递归方法 我浏览了许多解释它的链接 例如 它仅在自调用函数时有效 并且不应被覆盖等 到处都提到compiler optimizes 但是编译器做了什么魔法 概念来使其成为尾递归 对于下面的简单函数
  • 无法从 powershell 运行 Elixir 应用程序

    当我打字时iex S mix在 PowerShell 中我收到此错误 Invoke Expression A positional parameter cannot be found that accepts argument mix At
  • 每行后动态重复标题行

    如何在 gridview 的每一行之后重复标题行 您可以将代码添加到网格的 rowdatabound event 中 protected void GridView RowDataBound object sender GridViewRo
  • Extjs XTemplate 两个同级数组循环?

    我想将 XTempate 与以下 json 数据一起使用 在另一个数组中循环一个数组 var data name xxx rowTitleArr 1 2 3 colTitleArr a b c var tpl name
  • 如何压缩包含超过 12GB 数据的文件夹

    我需要压缩一个包含大量文件的文件夹 当我尝试在命令行中进行压缩时 它显示压缩错误 输入文件读取失败 我搜索网络并发现 ZIP 文件格式 仅处理可以的文件长度 包含在 32 位整数中 如果是这样 那么它一定是我收到错误的原因 因为我的文件夹大
  • 如何使用asihttprequest接受自签名证书

    我正在尝试获取自签名证书来使用我的应用程序 我现在正在使用 ASIHTTPRequest 库 如下所示 IBAction sendHttpsRequest Set request address NSMutableString databa
  • 现在 CGI 脚本有哪些用途?

    我非常熟悉一般的 Web 编程语言 但我现在使用的工具之一是 CGI 我只能说 CGI 脚本相当慢 CGI 如今仍然普遍使用吗 如果不是的话 被什么取代了 是否存在 CGI 仍然存在并被积极使用的利基功能 CGI是协议 它是创建动态页面最基
  • 使用循环合并和创建表

    我尝试搜索如何使用循环合并和创建多个表 但找不到我正在寻找的内容 我有四个表 表 1 1 1 2 1 3 和表 2 表1 1 1 2和1 3共享相同的列但具有不同的行 表 2 与表 1 1 1 2 和 1 3 具有相同的第一列 具体来说 表
  • 防止线程在处理异常后分离时调用 std::terminate()

    我有自己的线程类 旨在帮助安全地管理异常 它看起来像这样 为了简单起见 跳过了其他构造函数和互斥体 class ExceptThread public std thread public template
  • 打开磁力链接而不失去焦点

    javascript 或其他 有没有办法在浏览器失去焦点的情况下处理磁力链接 这有点像在后台打开一个选项卡而不离开当前页面 我最近遇到了类似的问题 并且能够通过在页面上创建命名框架并将其用作目标来解决该问题window open windo
  • 正则表达式:一次性获取没有扩展名的文件名?

    我只想使用正则表达式获取文件名 所以我一直在尝试简单的事情 例如 当然 只有当文件名具有一个扩展名时才有效 但如果是的话adfadsfads blah txt我只是想adfadsfads blah 我怎样才能用正则表达式做到这一点 关于大卫
  • 检查 C 中的溢出

    让我们有 int a b c may be char or float anything actually c a b 让int类型用4个字节表示 假设 a b 需要比 4 个字节多 1 位 即 假设结果是 1 00 0 32 个零 二进制
  • Surface SDK 可以在 Visual Studio 2012 上运行吗?

    我需要使用 Surface SDK 创建一个 WPF 应用程序 我正在使用 Visual Studio 2012 并且根据this https stackoverflow com questions 11624895 how can i u
  • AndroidNotification.Builder与NotificationCompat.Builder[重复]

    这个问题在这里已经有答案了 我看到的几乎所有 Android 通知示例代码似乎都使用了NotificationCompat 我已经使用Notification Builder编写了自己的代码 我不清楚使用NotificationCompat
  • 我应该如何多次插入多条记录?

    我有一个名为Entry声明如下 class Entry string Id get set string Name get set 然后是一个接受多个这样的方法Entry使用 ADO NET 插入数据库的对象 static void Ins
  • 两次之间经过的小时数,与国家/地区和时区无关

    我们如何确定两次之间经过的小时数 例如 旧金山下午 3 30 迪拜下午 7 30 我不清楚的部分是 是否存在通过考虑时区和国家来计算减去的时间跨度的通用方法 我使用 C 作为主要语言 任何帮助将不胜感激 提前致谢 您询问的是 旧金山下午 3