我有我写了一个函数(如果有一个很好的标准替代,请让我知道...)转换为unix时间戳不正确

time_t get_unix_time(string time_str) {

time_t loctime;

time(&loctime);

struct tm *given_time;

time_str = time_str.substr(0, time_str.find_first_of('.'));

replace(time_str.begin(), time_str.end(), ':', ',');

replace(time_str.begin(), time_str.end(), '-', ',');

replace(time_str.begin(), time_str.end(), '/', ',');

replace(time_str.begin(), time_str.end(), ' ', ',');

given_time = localtime(&loctime);

vector trecord = split_string(time_str, ',');

given_time->tm_year = atoi(trecord.at(0).c_str()) - 1900;

given_time->tm_mon = atoi(trecord.at(1).c_str()) - 1;

given_time->tm_mday = atoi(trecord.at(2).c_str());

given_time->tm_hour = atoi(trecord.at(3).c_str());

given_time->tm_min = atoi(trecord.at(4).c_str());

given_time->tm_sec = atoi(trecord.at(5).c_str());

return mktime(given_time);

}

输入(time_str)的函数是格式1970-01-01 00:00:00.0。所述split_string()函数把字符串time_str到含有载体:

{1970年,01,01,00,00,00}

其用于填写given_time结构。

我写了一个函数来测试它,并正确地通过它输入(epoch开始)。但是,它给我的时间是21600,这是1970-01-01 06:00:00或UTC + 6。期望的输出是(时期的开始)。

注意:我在美国中部时区,即UTC - 6。1970年1月1日午夜CST,time @ UTC将在1970年1月1日06:00:00。

我的函数中是否有任何特定于我的时区的东西?我在这个函数中做了什么错误,或者我可以做些不同的事情来使它独立于区域,或者至少总是UTC。

2011-01-13

Sagar

+0

此外,我不能使用boost库或任何其他库。我只能使用标准的C++东西。 –

2011-01-13 16:22:55

+1

C++库中的时区处理很隐晦。如果你的环境变量`TZ`的值设置为UTC,那么这段代码就可以工作。 –

2011-01-13 16:36:18

+1

mktime将当前时间解释为给定时间。所以如果你给1970-01-01 00:00:00它会在你的当地时间,所以mktime将返回UTC-0时间,即1970-01-01 06:00:00 –

2011-01-13 16:38:42

linux时间戳转换不对,转换为unix时间戳不正确相关推荐

  1. linux时间戳转换c语言,Unix时间戳和北京时间的相互转换(C语言实现 )

    一.问题背景 最近项目中需要上传包含时间戳的设备数据到服务器平台.原本想把"年","月","日","时","分 ...

  2. utc秒数 linux时间戳,UTC时间与UNIX时间戳之间的转换

    将当前系统时间转换为UNIX时间戳 BASH 1 2 $date +%s 1263236513 +%s是date的格式控制,上面命令的意思其实就是将当前系统时间以UNIX时间戳的形式输出. 如果要将任 ...

  3. Linux 各种BCD时间与Unix时间戳格式转换

    在Linux C或C++编程中,因为应用场景的不同,经常会遇到各种时间之间的装换,有时需要BCD时间,有时需要Unix时间戳,也有叫绝对时间的.这里介绍几种时间格式转换的应用. Unix时间戳: Un ...

  4. [工具类]将时间转换为unix时间戳格式

    写在前面 由于在数据库中存的时间有时间戳格式的数据,在解析以及保存的时候,就需要考虑到数据格式的兼容性问题.看到数据库中的时间字段基本上都是以时间戳格式存储的,没办法,只能将时间进行转换了,考虑到其他 ...

  5. 使用PHP将任意格式的日期转换为Unix时间戳

    在 PHP 中,可以使用 strtotime() 函数将任意格式的日期时间字符串转换为 Unix 时间戳.具体实现可以按照以下步骤: 获取任意格式的日期时间字符串,比如: $date_str = '2 ...

  6. DateTime时间格式转换为Unix时间戳格式

    // DateTime时间格式转换为Unix时间戳格式 public int ConvertDateTimeInt(System.DateTime time) { System.DateTime st ...

  7. php把北京时间转换时间戳,北京时间与unix时间戳(unix timestamp)的互转方法

    unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp),是从1970年1月1日(UTC/GMT的午夜)开始到某一时刻所经过的秒数, ...

  8. mysql转unix时间戳_mysql日期与unix时间戳互转

    #### UNIX时间戳转换为日期用函数: FROM_UNIXTIME(unix_timestamp,format) ```sql select FROM_UNIXTIME(1156219870); ...

  9. ios linux时间戳转时间,将UNIX时间戳转换为数据 – iOS

    我有一个iOS应用程序,它解析数据的 JSON提要.在这个数据中有一些UNIX时间戳,我存储在NSString中.我想要做的是将这些时间戳转换为日期(月和日).但是我试图在没有自己进行任何划分的情况下 ...

最新文章

  1. mysql 数据库 限制大小_MySQL数据库表各种大小限制小结
  2. python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串
  3. create view必须是批处理中仅有的语句_sqlserver 脚本和批处理指令小结
  4. java.util.NoSuchElementException: No value present
  5. 【机器学习基础】半监督算法概览(Python)
  6. springboot2——MyBatis入门
  7. vue-cli多环境配置
  8. linux下hba卡服务,在Linux下查看FC HBA卡的速率和状态
  9. netfilter与用户空间通信
  10. 万条留言!这本Python凭啥火爆程序员的朋友圈?
  11. L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  12. SmartRoute之远程接口调用和负载
  13. 【缅怀妈妈系列诗歌】之十三:妈妈,我接您回家
  14. 程序转换实验程序流程图_智能化实验室 | # 自动智能化实验室的5大系统 #
  15. JavaSE基础知识点思维导图
  16. 谭浩强第五版课后习题答案-----第三章
  17. 局域网技术,涉及到VLAN,TRUNK,链路聚合,VLAN间路由,单臂路由,
  18. 宇视摄像头安装水晶头防护套步骤
  19. JDK14之jpackage打包命令
  20. 【每日一题】 959. 由斜杠划分区域

热门文章

  1. Spring Data JPA框架
  2. Android Lambda 表达式使用实例,-
  3. 为何setRequestMethod(GET)不生效
  4. 软件质量的理解 摘录
  5. SVN 405错误
  6. c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
  7. 第14章 任务和特权级保护
  8. (JAVA)Object类之String类
  9. cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
  10. 【C语言进阶深度学习记录】一 数据类型的本质与变量的本质