将历史时间转换为 GMT

2024-01-01

我需要将格式为“2011061411322100”的一些字符串时间转换为 GMT - 我的第一次尝试如下。但问题是,时间来自另一台电脑,而且是历史时间。所以我没有实时获取时间,所以我不能简单地从我的代码运行的盒子上的当地时间获取 GMT。

问题是,如果我的代码在时间更改期间运行,则时间更改将发生在我的盒子上,但不会发生在我获取时间的远程盒子上。但是,我可以随时查询该框以获取当前时间。

因此,提供更多详细信息:

  1. 我在远程盒子上开始工作
  2. 作业完成
  3. 我得到一些与正在运行的作业相关的时间
  4. 我将时间转换为 GMT

如果 1. 和 2. 之间发生时间变化(夏令时),我就完蛋了。我的 GMT 转换将会中断。我想在 2) 之后我需要获取当前的远程盒时间并查看是否存在 >58 分钟的差异,然后将其应用于转换。但我无法找出可靠的方法来做到这一点。


string GMTConverter::strToGMT(const string& timeToConvert)
{
    // Set time zone from TZ environment variable. 
    _tzset();

    struct tm tmTime;


    //2011 06 14 11 32 21 00
     // (strToInt is just a wrapper for atoi) 
    int year = strToint(timeToConvert.substr(0, 4) );
    int month = strToint(timeToConvert.substr(4, 2) );
    int day = strToint(timeToConvert.substr(6, 2) );
    int hour = strToint(timeToConvert.substr(8, 2) );
    int min = strToint(timeToConvert.substr(10, 2) );
    int sec = strToint(timeToConvert.substr(12, 2) );

    cout<<"Time after parsing: "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<min<<":"<<sec<<endl;

    // add to tm struct and return
    tmTime.tm_hour = hour; 
    tmTime.tm_min = min; 
    tmTime.tm_sec = sec; 
    tmTime.tm_mday = day; 
    tmTime.tm_mon = (month-1); 
    tmTime.tm_year = (year - 1900); 

    cout <<"Time in TM: "<<tmTime.tm_year<<"/"<<tmTime.tm_mon<<"/"<<tmTime.tm_mday<<" "<<tmTime.tm_hour<<":"<<tmTime.tm_min<<":"<<tmTime.tm_sec<<endl;

    char currDateTime[64];

     // For logging
    strftime(currDateTime, 63, "%c", &tmTime);
    cout <<"Actual time:"<<currDateTime<<endl;

    time_t remotePCTime = mktime( &tmTime );

    struct tm *gmt = gmtime( &remotePCTime );
    cout << "gmt = " << asctime( gmt ) << endl;

    char datebuf_2[12];
    char timebuf_2[13];
    strftime( datebuf_2, 13, "%Y-%m-%d\0", gmt );
    strftime( timebuf_2, 13, "%H:%M:%S\0", gmt );

    return string(datebuf_2) + "T" + string(timebuf_2) + "." + string("000");
}

明显可靠的解决方案是使用 UTC(没有夏令时)作为您发送的时间戳。使用任何具有固有模糊性的时间系统(每年有一个小时的重叠,您可以在不同的时间获得相同的时间戳)将不可能有一个万无一失的方法,因为信息会丢失。

如果您无法控制远程计算机发送的时间格式,则只能尝试根据现有信息进行推断,例如,如果结束时间低于开始时间,则添加一小时。如果工作时间超过一小时,这会再次带来歧义,但至少时间不会倒退。

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

将历史时间转换为 GMT 的相关文章

随机推荐

  • Datasnap:有没有办法检测全局连接丢失?

    我正在寻找检测本地连接丢失的情况 是否有办法做到这一点 就像 Corelabs 组件上的事件一样 Thanks 编辑 抱歉 我会尝试更具体 我目前正在使用 datasnap 2009 设计一个原型 所以我有一个瘦客户端 一个无状态服务器应用
  • BeautifulSoup 未提取所有 html

    我们正在尝试从 Forever 21 网站的此页面获取产品网址 由于某种原因 BeautifulSoup 没有获取类为 item pic 的元素 即使它们位于站点 html 中 我们尝试过使用 requests mechanize sele
  • 使用加密连接字符串配置 ELMAH 和 SQL Server 日志记录

    我正在尝试使用 SQL Server 2008 R2 在 ASP NET 4 应用程序中配置 ELMAH 错误日志记录 有什么方法可以告诉 ELMAH 在我们提供的连接字符串上调用我们的内部解密函数吗 我需要修改 ELMAH 源并重建吗
  • 处理多个 Helm 图表之间共享的 Kubernetes 对象

    我最近问了一个关于如何构建应该捆绑在一起的多个应用程序的问题 并且正在考虑让每个单独的应用程序都有自己的 Helm 图表和自己的入口控制器 这将允许 CI CD 轻松更新每个组件 而不影响其余组件 我还考虑在实际发布时使用 伞 图表来指定其
  • 将数组发送到 php 中的函数

    这是代码 function dosomething do something with the array like print value ar array 1 2 3 dosomething ar 这段代码工作正常 我尝试做的是将数组直
  • TypeScript:如何为已安装的 npm 包定义自定义类型?

    我喜欢用rx node http npmjs com package rx node在 TypeScript 中 import RxNode from rx node 我安装了rx node http npmjs com package r
  • Puppeteer 无法可视化完整的 SVG 图表

    我在 Try Puppeteer 中使用此代码 const browser await puppeteer launch const page await browser newPage await page goto https www
  • 提取 Stan 文件中转换后的数据块中的数据

    我想提取z在 stanfit 对象转换后的数据块中f 是否可以 library rstan m lt stan model model code data real x transformed data real z z chi squar
  • 在使用 psql 在本地下载/保存之前,在 AWS 实例上将表 gzip 转换为 csv

    我是 PostgreSQL 和 psql CLI 的新手 我的带宽极其有限 这导致从 AWS 实例下载每个表 每个表 1 5 GB 需要几个小时 使用 psql 登录数据库后 我使用的当前命令 copy SELECT FROM table
  • TicTacToe AI 做出错误的决定

    一点背景知识 作为在 C 中学习多节点树的一种方法 我决定生成所有可能的 TicTacToe 棋盘并将它们存储在树中 以便从节点开始的分支都是可以从该节点开始的所有棋盘 以及节点是一步步跟随的棋盘 之后 我认为编写一个人工智能来使用该树作为
  • Indy 写缓冲/高效 TCP 通信

    我知道 我问了很多问题 但作为一名新的 delphi 开发人员 我一直在解决所有这些问题 这个使用 indy 10 处理 TCP 通信 为了提高通信效率 我将客户端操作请求编码为单个字节 在大多数情况下 当然后面跟着其他数据字节 但在本例中
  • DynamoDB Stream 按顺序处理

    假设我有以下包含条目的 DynamoDB 表 A B C 列 a1 b1 c1 条目 1 a1 b2 c2 条目 2 A是键 分区键 B是排序键 唯一 C是属性 我想确保 DynamoDB 流可以保证 B 的按序处理 如果按此顺序进行更改
  • std::move_if_no except 仍然移动抛出仅移动类型的基本原理?

    move if noexcept http en cppreference com w cpp utility move if noexcept will 返回一个右值 促进移动 如果移动构造函数是noexcept 或者如果没有复制构造函数
  • Android Unity c#:写入保存游戏数据时发生 UnauthorizedAccessException

    我正在 Android 中调试 Unity 游戏 一切都在 Unity 编辑器中运行 在 Android 上保存当前游戏数据时 我收到 UnauthorizedAccessException 我正在写入持久数据路径 所以我不明白为什么访问被
  • Android 中在 jni 中运行的原生 C 代码与在 shell 中运行的区别

    我有一个原生 C Android 应用程序 首先 我将本机 C 代码构建到共享库中 jni 将使用该库 该库使用一些内核可加载模块 ko 一些已经加载 一些必须通过 insmod 命令加载 我还构建了一个使用该库的可执行文件 并且它可以通过
  • 延迟对服务器、JavaScript 的批量 GET 请求

    背景 我正在向服务器发出一批 HTTP GET 请求 我需要限制它们以避免杀死可怜的服务器 出于演示目的 这将是 GET 方法 This function simulates a real HTTP GET request that alw
  • 简单的C程序不打印输出[重复]

    这个问题在这里已经有答案了 我有一个简单的c程序 include
  • Hibernate 儿童计数标准

    我有父母 孩子关系 newsItem 1 评论 如何使用一个 Criteria 查询选择新闻项目列表以及每个新闻项目的评论计数 我想做这样的事情 select news item count comment id from news ite
  • 在 user.csv 上循环,然后在 jmeter 中循环 data.csv

    我需要做这样的事情 foreach user in a users csv foreach data in data csv send http request 我看过了这个帖子 https stackoverflow com questi
  • 将历史时间转换为 GMT

    我需要将格式为 2011061411322100 的一些字符串时间转换为 GMT 我的第一次尝试如下 但问题是 时间来自另一台电脑 而且是历史时间 所以我没有实时获取时间 所以我不能简单地从我的代码运行的盒子上的当地时间获取 GMT 问题是